1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388
|
================================
Generating LaTeX with Docutils
================================
:Author: Engelbert Gruber
:Contact: grubert@users.sourceforge.net
:Revision: $Revision: 1.55 $
:Date: $Date: 2004/09/11 18:56:29 $
:Copyright: This document has been placed in the public domain.
.. contents::
Introduction
============
Producing LaTeX code from reST input could be done in at least two ways:
a. Transform the internal markup into corresponding LaTeX markup e.g.
a section title would be written as ```\section{this section ...}``.
b. Using LaTeX as a typesetting system to produce desired paperwork
without caring about loosing document structure information.
The former might be preferable, but limits to LaTeXs capabilities, so
in reality it is a mix. The reality is that LaTeX has a titlepage with
title, author and date, by default only title is used. Author and date
are shown in the docutils docinfo table and set to blank for LaTeX.
To get author and date set by LaTeX specify option "use-LaTeX-docinfo".
Options
=======
Configuration can be done in two ways (again):
1. Options to the docutils tool: e.g. language selection.
2. Options to LaTeX via the stylesheet file.
The generated LaTeX documents should be kept processable by a standard
LaTeX installation (if such a thing exists), therefore the document
contains default settings. To allow *overwriting defaults* the stylesheet
is included at last.
Run ``rst2latex.py --help`` to see the command-line options, or have look in
config documentytion.
===================== ================================================
Configuration Issue Description
===================== ================================================
papersize Default: a4paper. Paper geometry can be changed
using ``\geometry{xxx}`` entries.
Some possibilities:
* a4paper, b3paper, letterpaper, executivepaper,
legalpaper
* landscape, portrait, twoside.
and a ton of other option setting margins.
An example::
\geometry{a5paper,landscape}
--------------------- ------------------------------------------------
paragraph indent By default LaTeX indents the forst line in a
paragraph. The following lines set indentation
to zero but add a vertical space between
paragraphs.::
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
--------------------- ------------------------------------------------
admonitionwidth The width for admonitions.
Default: 0.9*textwidth, this can be changed
e.g.::
\setlength{\admonitionwidth}{0.7\textwidth}
--------------------- ------------------------------------------------
docinfowidth The width for the docinfo table.
Default: 0.9*textwidth, changed to e.g.::
\setlength{\docinfowidth}{0.7\textwidth}
--------------------- ------------------------------------------------
rubric style The header contains the definition of a new
LaTeX command rubric. Inserting::
\renewcommand{\rubric}[1]{\subsection*{
~\hfill {\color{red} #1} \hfill ~}}
sets rubric to subsection style in red.
Default: subsection style italic.
--------------------- ------------------------------------------------
line spacing Is done with package *setspace*, which gives
singlespace, onehalfspace and doublespace
commands. To get documentwide double spacing,
add this to your stylesheet ::
\usepackage{setspace}
\doublespacing
Another way ::
\linespread{1.55}
And yet another, add ``doublesp`` to the
documentoptions and e.g. ::
\setstretch{1.7}
for bigger linespacing.
--------------------- ------------------------------------------------
font selection see below
===================== ================================================
Font selection
--------------
When generating pdf-files from LaTeX, use the pdflatex command, the files
are a lot smaller if postscript fonts are used. This *was* fixed by putting
``\usepackage{times}`` into the stylesheet.
It is said that the typewriter font in computer modern font, the default
LaTeX font package, is too heavy compared to the others. There is a package
or some commands too fix this, which i currently cannot find.
Some people diagnose a similar unbalance for the postscript fonts, the
package to fix this is ``\usepackage{pslatex}``.
pslatex in contrast to the standard LaTeX fonts has a bold typewriter font.
As ``times`` does not use the appropriate mathematical fonts and ``pslatex``
does not work with T1 encodings one should use::
\usepackage{mathptmx}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
*font encoding* can be selected with option "font-encoding". Default
uses package "ae" for old style font encoding use "OT1".
Hyphenation
-----------
The amount of hyphenation is influenced by ``\hyphenpenalty``, setting it to
10000 almost prevents hyphenation. As this produces lines with more spcea
between words one should increase LaTeX's ``\tolerance`` for this.
E.g. try ::
\hyphenpenalty=5000
\tolerance=1000
Unicode
-------
The generated LaTeX documents are in latin1 encoding per default, if unicode
characters are required one must set ``--output-encoding=utf-8`` install
`LaTeX unicode`_ support and add::
\usepackage{ucs}
\usepackage[utf8]{inputenc}
to the stylesheet. If LaTeX issues a Warning about unloaded/known characters
adding ::
\PreloadUnicodePage{n}
where *n* is the unicode pagenumber, might help.
.. _LaTeX unicode: http://www.unruh.de/DniQ/latex/unicode/
Table of figures
----------------
A table of figures can be generated by a command directly to LaTeX::
.. raw:: LaTeX
\listoffigures
LaTeX also has a command ``\listoftables``.
Section numbering
-----------------
If section numbering and LaTeX table of contents is used LaTeX and
docutils will number sections. To switch off displaying of LaTeX's
numbers one has to add following lines to the stylesheet ::
% no section number display
\makeatletter
\def\@seccntformat#1{}
\makeatother
% no numbers in toc
\renewcommand{\numberline}[1]{}
Number pages by chapter
-----------------------
This can be accomplished with ::
\usepackage{chappg}
From the documentation
Basic operation of the package is to redefine ``\thepage`` to be
``\thechapter-\arabic{page}``, and to cause the page number to be reset
(to 1) at the start of each chapter. So the pages of chapter 3 will
be numbered 3-1, 3-2, ..., and the pages of appendix B will be
numbered B-1, B-2, ...
See documentation for details and other possibilities.
Images
------
Images are included in LaTeX by the graphicx package. The supported
image formats depend on the used driver (dvi, dvips, pdftex, ...).
pdf-image inclusion in pdf files fails, specify ``--graphicx-option=pdftex``
or ``--graphicx-option=auto``.
Commands directly to LaTeX
==========================
By means of the reST-raw directive one can give commands directly to
LaTeX, e.g. forcing a page break::
.. raw:: LaTeX
\newpage
Or setting formulas in LaTeX::
.. raw:: LaTeX
$$x^3 + 3x^2a + 3xa^2 + a^3,$$
Or making a colorbox: If someone wants to get a red background for a textblock,
she/he can put \definecolor{bg}{rgb}{.9,0,0} into style.tex and in
reStructuredText do something like this::
|begincolorbox|
Nobody expects the spanish inquisition.
|endcolorbox|
.. |begincolorbox| raw:: LaTeX
\\begin{center}
\\colorbox{bg}{
\\parbox{0.985\\linewidth}{
.. |endcolorbox| raw:: LaTeX
}}
\\end{center}
Custom title page
-----------------
Currently maketitle only shows the title and subtitle, date and author are shown
in the docinfo table.
To change the titlepage layout, e.g. see fancyhdr, one must redefine the
maketitle command in the stylesheet::
\renewcommand{\maketitle}{
\begin{titlepage}
\begin{center}
\textsf{TITLE \@title} \\
Date: \today
\end{center}
\end{titlepage}
}
``\@title`` contains the title.
Problems
========
Open to be fixed or open to discussion.
footnotes and citations
-----------------------
Initially both were implemented using figures, because hyperlinking back
and forth seemed to be impossible. Later images were put into figures.
This results in footnotes images and figures possibly being mixed at page
foot.
* Use LaTeX footnotes and citations for printing or more complex layout.
* Footnotes and citations done with figures might excell in hyperlink
support.
If ``use-latex-citations`` is used a bibliography is inserted right at
the end of the document. *This should be customizable*.
Tables
------
:Tablewidth: reST-documents line length is assumed to be 80 characters. The
tablewidth is set relative to this value. If someone produces
documents with line length of 132 this will fail.
Table width is tried to fit in page even if it is wider than
the assumed linewidth, still assumed linewidth is a hook.
* In tools.txt the option tables right column, there should be some more spacing
between the description and the next paragraph "Default:".
Paragraph separation in tables is hairy.
see http://www.tex.ac.uk/cgi-bin/texfaq2html?label=struttab
- The strut solution did not work.
- setting extrarowheight added ad top of row not between paragraphs in
a cell. ALTHOUGH i set it to 2pt because, text is too close to the topline.
- baselineskip/stretch does not help.
* Should there be two hlines after table head and on table end ?
* Table: multicol cells are always {l}.
* The contents of a rowspan cell do not influence table height.
(Maybe if we put a tabular inside ?)
* Table heads and footer for longtable (firstpage lastpage ..).
* Table cells with multirow and multicolumn
* literal-blocks in table cells:
- If verbatim or flushleft is used one gets vertical space above and below.
- This is bad for the topmost paragraph in a cell, therefore the writer
uses raggedright.
- Ragged right fails on followup paragraphs as the vertical space would be
missing.
Notes
~~~~~
* table-style booktabs: booktabs.sty 1.00 does not work with longtable.
Miscellaneous
-------------
* Selection of LaTeX fontsize configurable.
* Assumed reST linelength for table width setting configurable.
* literal-block indentation configurable.
* recongize LaTeX and replace by ``\LaTeX``.
* Support embed-stylesheet.
* Sidebar handling.
* Maybe add end of line after term in definition list. see
http://roundup.sf.net/doc-0.5/features.pdf
* Pdfbookmark level 4 (and greater) does not work (might be settable but OTOH).
* center subsection{Abstract} gives a LaTeX error here.
``! LaTeX Error: Something's wrong--perhaps a missing \item.``
Committed a HACK: centering by hfill.
* Document errors are also too silent.
* Use optionlist for docinfo, the table does only work for single page.
* Consider peter funk's hooks for TeXpert:
* Define his own document preamble (including the choice to
choose his own documentclass. That would make the ``--documentclass``
option superfluous). I suggest to call this option ``--preamble``
* Use two additional hooks to put additional stuff just behind the
``\begin{document}`` and just before the ``\end{document}`` macros.
Typical uses would be ``\tableofcontents``, ``\listoffigures`` and
``\appendix``, ``\makeindex``, ``\makeglossary`` and some such
for larger documents.
* The indentional problematic error in docs/user/rst/demo.txt is not
referring anywhere.
* Footnotes are not all on the same page (as in
docs/user/rst/demo.txt) and do not link back and forth.
* No link to system errors.
* Hyperlinks are not hyphenated; this leads to bad spacing. See
docs/user/rst/demo.txt 2.14 directives.
* Meta keywords into pdf ?
* Pagestyle headings does not work, when sections are starred.
* For additional docinfo items: the field_body is inserted as text, i.e. no
markup is done.
* Multiple author entries in docinfo (same thing as in html).
* keep literal-blocks together on a page, avoid pagebreaks.
failed experiments up to now: samepage, minipage, pagebreak 1 to 4 before
the block.
|