====== Central TeXLive distributions ======
If you are using TeXLive on your linux workstations you may use texlive-full portable installed in:
/opt/texlive
There are folders for several years backward up to the latest distribution.
In order to use the shared TeX binaries from the command line, you may want to add the following line to your .bashrc:
export PATH=/opt/texlive/2018/bin/x86_64-linux/:$PATH
=== Texstudio ===
You may use {{ :latex:texlive-portable2018-full.zip |this}} config file for setting up **texstudio** to use version from 2018.
====== Tips and Tricks for LaTeX ======
* see also [[::it-tricks#latex-pdf|IT-tricks with LaTeX and pdf]]
* 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. [[http://www.personal.ceu.hu/tex/pagestyl.htm#mark|(source)]]
* ''\chaptermark'', ''\sectionmark'', ... with ''fancyhdr'' package
* see http://en.wikibooks.org/wiki/LaTeX/Page_Layout for more details
* Useful page (and a figure) for **lists**:
* http://latex.computersci.org/Reference/ListEnvironments
* 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.)
* [[http://www.tug.org/TUGboat/Articles/tb22-4/tb72wilson.pdf|(source, Peter Wilson)]]
* 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** [[http://texblog.wordpress.com/2007/08/01/placing-figurestables-side-by-side-minipage/|(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 [[http://tex.stackexchange.com/questions/16942/difference-between-textwidth-linewidth-and-hsize|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 than ''longtable'' or ''supertabular''), //''tabulary''// (pretty wrapped text in autosized cells, similar to ''tabularx''), //''booktabs''// (no vertical lines, ''\toprule'', ''\midrule''/''\cmidrule'', ''\bottomrule'' instead of ''\hline''/''\cline'') (all from this [[http://www.tug.org/pracjourn/2007-1/mori/mori.pdf|compendium]])
* ''longtable'' or ''xtabular'' environment **cannot** be inside ''table'' environment. (Put it inside ''center'' instead, since you cannot use ''\centering'' as before.)
* **Higher cells/rows in tables** can be achieved either by ''booktabs'' package, or (if you have to use **vertical lines** in tables) by inserting ''\toppadding'' and ''\bottompadding'' in every row:
\newcommand\toppadding{\rule{0pt}{2.6ex}}
\newcommand\bottompadding{\rule[-1.2ex]{0pt}{0pt}}
...
\hline
\toppadding First cell\bottompadding & Second cell & Third one \\
\hline
...
* ''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'), or
* ''hypertexnames=false'' (=> 'section.289')
* **New** type of **float** and its **List of**
\usepackage{tocloft}
\newlistof{graphs}{grp}{List of Graphs} % new list, file extension, its name
\renewcommand{\cftgrptitlefont}{\sffamily\bfseries\huge} % style of list title
\setlength{\cftbeforegrptitleskip}{10ex} % space above list title
\setlength{\cftaftergrptitleskip}{4ex} % space below list title
% previous three lines alternatively (in pbmlbook class): \cfttitleset{grp}
\newlistentry{graph}{grp}{0} % one line of the list (because it will be of type 'graph', not 'graphs', due to float named 'graph')
\renewcommand{\cftgraphfont}{\sffamily} % entry style
\renewcommand{\cftgraphpagefont}{\sffamily} % page number style
\setlength{\cftgraphnumwidth}{2em} % space for graph number
% previous three lines alternatively (in pbmlbook class): \cftlineset{graph}{}{2em}
\usepackage{float}
\newfloat{graph}{ht!}{grp} % new float environment {graph}, "place it here or at the top of page" by default
\floatname{graph}{Graph} % each caption is started as "Graph \thegraph:
* **Crop** PDF **figure** by LaTeX
\graphicspath{{./images/}}
\fbox{\includegraphics[scale=.4,trim=70 150 120 110,clip]{filename}}
* it't left bottom right top and crop ''./images/filename.pdf''!
* ''fbox'' -- for debugging
* ''scale'' or ''width'' or ''height''
* other useful: ''bb=10 10 10 10'', ''angle=45'', ''keepaspectratio'', ''draft''
* Special counter/style/... in **enumerate**
\renewcommand{\labelenumi}{\Alph{enumi}.}
\setcounter{lastenumi}{\theenumi}
\begin{enumerate}
\setcounter{enumi}{\thelastenumi}
...
==== 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''
==== Fonts ====
* ''fc-list'' -- list of known fonts
* ''fc-list :lang=cs''
* any font in ''~/.fonts'' is immediately found and ready for use
* other font directories can be specified in ''~/.fonts.conf'' in ''dir''-element: ''