Auseine vorherige Frage, nehmen Sie dieses Beispiel
\documentclass{book}
\usepackage{lipsum}
\usepackage[left, pagewise]{lineno} % LINE
\usepackage{ltxcmds}
\makeatletter
\newcommand{\OnlyIfPackageLoaded}[2]{\ltx@ifpackageloaded{#1}{#2}{}}
\makeatother
\makeatletter
\OnlyIfPackageLoaded{lineno}{
\def\makeLineNumberLeft{%
\linenumberfont\llap{\hb@xt@\linenumberwidth{\LineNumber\hss}\hskip\linenumbersep}% left line number
\hskip\columnwidth% skip over column of text
\rlap{\hskip\linenumbersep\hb@xt@\linenumberwidth{\hss\LineNumber}}\hss}% right line number
\leftlinenumbers% Re-issue [left] option
}
\makeatother
\begin{document}
\OnlyIfPackageLoaded{lineno}{\linenumbers}
\lipsum[1]
\end{document}
wobei \OnlyIfPackageLoaded
verwendet wird, um lineno
-bezogene Dinge verschwinden zu lassen, wenn ich ihr auskommentiere \usepackage
.
Bedauerlicherweise:
- wenn ich aus einem sauberen Verzeichnis mit
THAT
auskommentierten Zeilen kompiliere, ist die Kompilierung erfolgreich; - wenn ich
THAT
die Zeile dekommentiere und neu kompiliere, ist die Kompilierung erfolgreich. - wenn ich die Zeile neu kommentiere
THAT
und neu kompiliere, schlägt die Kompilierung fehl:... (./main.aux ! Undefined control sequence. l.2 \@LN {0}{0} ?
- Wenn ich die
.aux
Datei lösche und neu kompiliere, ist die Kompilierung erfolgreich.
Was kann ich tun, um beim Wechsel von mit- lineno
zu ohne- die manuelle Löschung der AUX-Datei zu vermeiden lineno
?
Antwort1
Sie müssen lediglich den Else-Zweig nicht ausblenden, \@ifpackageloaded
damit Sie den Aux-Befehl so definieren können, dass er nichts tut. ( ltxcmds
tut hier nichts, da dies alles bereits Latex ist)
\documentclass{book}
\usepackage{lipsum}
\usepackage[left, pagewise]{lineno} % LINE
% not useful here \usepackage{ltxcmds}
\makeatletter
\newcommand{\OnlyIfPackageLoadedTF}{\@ifpackageloaded}
\newcommand{\OnlyIfPackageLoadedT}[2]{\@ifpackageloaded{#1}{#2}{}}
\makeatother
\makeatletter
\OnlyIfPackageLoadedTF{lineno}{
\def\makeLineNumberLeft{%
\linenumberfont\llap{\hb@xt@\linenumberwidth{\LineNumber\hss}\hskip\linenumbersep}% left line number
\hskip\columnwidth% skip over column of text
\rlap{\hskip\linenumbersep\hb@xt@\linenumberwidth{\hss\LineNumber}}\hss}% right line number
\leftlinenumbers% Re-issue [left] option
}
% else
{
\def\@LN#1#2{}
}
\makeatother
\begin{document}
\OnlyIfPackageLoadedT{lineno}{\linenumbers}
\lipsum[1]
\end{document}