Deuma pergunta anterior, veja este exemplo
\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}
where \OnlyIfPackageLoaded
é usado para fazer lineno
desaparecer coisas relacionadas se eu comentar seu arquivo \usepackage
.
Infelizmente:
- se eu compilar a partir de um diretório limpo com
THAT
linha comentada, a compilação será bem-sucedida; - se eu decomentar
THAT
a linha e recompilar, a compilação será bem-sucedida; - se eu comentar novamente
THAT
a linha e recompilar, a compilação falhará:... (./main.aux ! Undefined control sequence. l.2 \@LN {0}{0} ?
- se eu excluir o
.aux
arquivo e recompilar, a compilação será bem-sucedida.
O que posso fazer para evitar a exclusão manual do arquivo AUX ao passar de com lineno
para sem lineno
?
Responder1
Você só precisa não ocultar o ramo else \@ifpackageloaded
para poder definir o comando aux para não fazer nada. ( ltxcmds
não faz nada aqui porque tudo já é 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}