에서이전 질문, 이 예를 들어보세요
\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
하는 데 사용됩니다 .lineno
\usepackage
안타깝게도:
- 주석 처리된 줄을 사용하여 깨끗한 디렉토리에서 컴파일하면
THAT
컴파일이 성공합니다. - 줄을 분해
THAT
하고 다시 컴파일하면 컴파일이 성공합니다. - 해당 줄에 다시 주석
THAT
을 달고 다시 컴파일하면 컴파일이 실패합니다.... (./main.aux ! Undefined control sequence. l.2 \@LN {0}{0} ?
- 파일을 삭제
.aux
하고 다시 컴파일하면 컴파일이 성공합니다.
lineno
AUX 파일이 있는 상태에서 없는 상태로 이동할 때 AUX 파일을 수동으로 삭제하지 않으려면 어떻게 해야 합니까 lineno
?
답변1
\@ifpackageloaded
aux 명령이 아무 작업도 수행하지 않도록 정의할 수 있도록 else 분기를 숨기지 않아도 됩니다 . ( ltxcmds
이미 모두 라텍스이므로 여기서는 아무것도 하지 않습니다.)
\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}