Deuna pregunta previa, toma este ejemplo
\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}
donde \OnlyIfPackageLoaded
se usa para hacer que lineno
las cosas relacionadas con - desaparezcan si comento su \usepackage
.
Desafortunadamente:
- si compilo desde un directorio limpio con
THAT
una línea comentada, la compilación se realiza correctamente; - si decomento
THAT
la línea y vuelvo a compilar, la compilación se realiza correctamente; - Si vuelvo a comentar
THAT
la línea y la vuelvo a compilar, la compilación falla:... (./main.aux ! Undefined control sequence. l.2 \@LN {0}{0} ?
- si elimino el
.aux
archivo y lo vuelvo a compilar, la compilación se realiza correctamente.
¿Qué puedo hacer para evitar tener que eliminar manualmente el archivo AUX cuando paso de sin lineno
a sin lineno
?
Respuesta1
Solo necesita no ocultar la rama else \@ifpackageloaded
para poder definir el comando aux para que no haga nada. ( ltxcmds
no hace nada aquí ya que todo esto ya es látex)
\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}