This is an old revision of the document!
Tips and Tricks for LaTeX
- For the redefining the header, you can use
\markboth
– two parameters (left and right page) or\markright
with just one parameter\markboth{\uppercase{Summary}}{\uppercase{Summary}}
- You should note that a left-hand heading is generated by the last
\markboth
command before the end of the page, while a right-hand heading is generated by the first\markboth
or\markright
that comes on the page if there is one, otherwise by the last one before the page. (source)
\chaptermark
,\sectionmark
, … withfancyhdr
package- see http://en.wikibooks.org/wiki/LaTeX/Page_Layout for more details
- Useful page (and a figure) for lists:
- The if condition in TeX:
- construction if
\variable
is empty:The variable \if#\variable# is empty.\else contains \variable.\fi
(\variable
naturally cannot contain'#'
)The variable \ifx\@empty\variable is empty.\else contains \variable.\fi
- comparing two strings:
\newif\ifsame \newcommand{\strcfstr}[2]{% \samefalse \begingroup \def\1{#1}\def\2{#2}% \ifx\1\2\endgroup \sametrue \else \endgroup \fi }
- (The grouping is needed there to make '\1' and '\2' local but '\sametrue' global.)
- allocator
\newif
is used in a sequention:
a declaration\newif\ifsomething
setting either\somethingtrue
or\somethingfalse
and asking\ifsomething YES\else NO\fi
- foreach in TeX (thanks to TMA):
- If you want to
\dothis{}
with each word in\foreach{Peter, Paul, John, Ringo}
, you can do this as follows:\def\foreach#1{\first#1,,}
\def\first#1,{\if,#1,\else\dothis{#1}\expandafter\first\fi}
- and then write something here:
\def\dothis#1{ … whatever #1 … }
- Aligning an element in the line according to whether it fits in the rest of the line (TeX)
- always right-aligned (from Petr Olšák's TeXbook naruby):
\def\alignelemright #1\par{\unskip \nobreak\hfill\penalty71\hskip2em\hbox{}\nobreak\hfill \hbox{#1}\par}
- always left-aligned:
\def\alignelemleft #1\par{\unskip \hbox{} \hskip 0pt plus 1fil \penalty0 \hbox{#1}\hskip 0pt plus 1fill\hbox{}\par}
- align to the right, if it fits, or to the left in the new line:
\def\alignelemrightorleft #1\par{\unskip \nobreak\hfill\penalty71\hskip2em \hbox{#1}\par}
- Two tables/figures side-by-side (source):
\begin{figure} \begin{minipage}[b]{0.5\linewidth} \centering \includegraphics[scale=1]{fn1} \caption{c} \label{f1} \end{minipage} \hspace{0.5cm} \begin{minipage}[b]{0.5\linewidth} \centering \includegraphics[scale=1]{fn2} \caption{c} \label{f2} \end{minipage} \end{figure}
- Include completed PDF and add page numbers and other headings:
\usepackage{pdfpages}
% settings \markright{Author Name} % or e.g. package fancyhdr \setcounter{page}{13} % number of first page % inserting (first page with pagenumber in the foot, others in the head with author name) \includepdf[pages=1, pagecommand={\thispagestyle{plain}}]{file.pdf} \includepdf[pages=2-, pagecommand={\thispagestyle{myheadings}}]{file.pdf}
\textwidth
,\linewidth
,\columnwidth
,\hsize
and others explained here (You want\linewidth
in most cases.)- Useful packages:
- Source printing:
fancyvrb
,listings
fancyhdr
- pseudocode
algorithmicx
- trees:
xytree
(complicated),dtree
(Obo, pstricks),xyling
(Martin P.,\B
and\T
must be relaxed) - tables:
xtab
(better thanlongtable
orsupertabular
),tabulary
(pretty wrapped text in autosized cells, similar totabularx
),booktabs
(no vertical lines,\toprule
,\midrule
,\bottomrule
instead of\hline
) (all from this compendium)
longtable
orxtabular
environment cannot be insidetable
environment. (Put it insidecenter
instead, since you cannot use\centering
as before.)hyperref
package:- If some links from ToC point to incorrect objects (e.g. section III.2.5 points to the page where the section I.2.5 starts), then the problem is in internal hyperref naming convention (both section in the example are represented as 'section.2.5'). You can change it either by
naturalnames=true
(⇒ 'section.III.2.5'), orhypertexnames=false
(⇒ 'section.289')
počítání slov (a dalších věcí)
texcount soubor.tex
texcount -inc soubor.tex
… započítá správně slova i v souborech vložených v hlavním souboru pomocí \include
Podrobnosti v dokumentaci: texdoc texcount
Some PBML and SCTL-specific issues are here.