wtorek, 17 lipca 2012

Kilka trików dotyczących LaTeXa

Parę trików LaTeXa, na które wpadłem w/z ze składanymi ostatnio dokumentami.

Szerokie tabele (lub rysunki) wystające na zewnętrzny margines:


\usepackage{ifoddpage}
%% Istotne są polecenia \unskip i \ignorespaces, inaczej zawartość nie jest
%% wyrównana do wewnętrznego marginesu:
\newenvironment{ShiftToOuterMargin}{\leavevmode
\noindent \hbox to\textwidth \bgroup\checkoddpage\unskip \ignorespaces
\ifoddpage \else\hss\fi}{\ifoddpage\hss\else\fi\unskip\egroup}
%% ... ... ...
\begin{ShiftToOuterMargin}
\begin{tabular}{|l|rrrr|rrrr|} ...
\end{tabular}
\end{ShiftToOuterMargin}

Do ustalenia, czy bieżąca strona jest parzysta czy nieparzysta używam pakietu ifoddpage (polecenia \checkoddpage oraz \ifoddpage). Zwykły zapis \ifodd\c@page nie zadziała z oczywistych względów. Więcej na ten temat znajduje się w TeX Frequently Asked Questions.

Zapamiętanie zawartości tekstu składanego literalnie (pakiet fancyvrb; otoczenie SaveVerbatim i polecenie \BUseVerbatim):


\usepackage{fancyvrb}
%% ... ... ...
\begin{SaveVerbatim}{VerbEnv}
... tekst literalny ...
\end{SaveVerbatim}
\begin{ShiftToOuterMargin}
\BUseVerbatim{VerbEnv}
\end{ShiftToOuterMargin}

Formatowanie przypisów w poprzek reguł LaTeXa: przypis ma być umieszczony w kolumnie tekstu wciętej o wielkość wcięcia akapitowego z lewej strony. Na marginesie (o wielkości wcięcia akapitowego) ma być umieszczony numer odsyłacza. Numer przypisu nie we być złożony we frakcji górnej ale stopniem podstawowym pisma.

Pomysł rozwiązania zgłoszony na GUST-l (autor anonimowy):


\makeatletter
\newdimen \@parindent \@parindent=\parindent
\renewcommand{\@makefntext}[1]{%
\everypar = {\hangindent = \@parindent \hangafter = 1}{\par}
\parindent 1.5\@parindent % wcięcie drugiego (i kolejnych) akapitu tego samego długiego przypisu
\noindent\hb@xt@ \@parindent % 0\@parindent
{\hss\@makefnmark \enspace}#1}
%{\hss{\@thefnmark} \enspace}#1} % do nautycznych
\makeatother

Polecenie \@makefnmark formatuje numer odsyłacza, domyślnie jest to:


\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}

Odsyłacz jest formatowany identycznie w tekście i w kolumnie przypisów. Zamiast tego trzeba zdefiniować formatowanie na dwa sposoby, przykładowo:


%% numer odsyłacza do kolumny tekstu:
\def\@makeTextfnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
%% numer odsyłacza do kolumny przypisów
\def\@makefnmark{\hbox{\normalfont\@thefnmark}}

oraz w definicji \@makefntext zamiast \@makefnmark wstawić \@makeTextfnmark.

Brak komentarzy:

Prześlij komentarz