编译(2次).tex
文件后:
latex "\AtBeginDocument{\RequirePackage[pagewise]{lineno}\linenumbers}\input{mydocument.tex}"
然后再次编译
latex mydocument.tex
我收到此错误:
! Undefined control sequence.
l.3 \@LN
要删除它,我需要删除 .aux 文件并再次编译。
为了避免这种情况,我决定编写和读取重命名的 .aux 文件来进行行号编译。可以这样做吗(通过命令行)?欢迎提出所有建议。
您可以尝试:
\documentclass[11pt]{article}
\pdfoutput=1
\pagestyle{empty}
\usepackage{lipsum}
%% \usepackage[pagewise]{lineno}
%% \linenumbers
\begin{document}
\lipsum
\lipsum
\lipsum
\end{document}
PS 我如何在此页面插入编译的文件(pdf或dvi)?
编辑:我想到了一个可能的解决方案:如果在编译后,我将 \@LN 的定义放在文件的顶部(或正确的位置),会怎么样.aux
?我的问题是我不知道如何找到这个定义。我查看了 lineno.sty,但没有找到它。
使用简单latex
命令,编译器不会抱怨未定义的命令并覆盖辅助文件。使用 lineno 包,编译器只会在文件中找到 \@NL 命令定义的重复项.aux
。
它能起作用吗?
答案1
在文档中执行条件不是更简单吗?
\documentclass[11pt]{article}
\usepackage{lipsum}
\newif\ifproof
%\prooftrue
\ifproof
\usepackage[pagewise]{lineno}
\linenumbers
\else
\makeatletter
\def\@LN#1#2{}
\makeatother
\fi
\begin{document}
\lipsum
\lipsum
\lipsum
\end{document}
注释掉时\prooftrue
,不会添加行号。取消注释即可获得行号。
如果你确实需要从命令行执行此操作,请使用
latex '\expandafter\providecommand\csname @LN\endcsname[2]{}\makeatother\input{mydocument.tex}'
当您不想要行号的情况时。
答案2
您可以\@LN
在文档前言中定义,但不是取决于是否lineno
已加载,而只是取决于\@LN
宏是否已定义。以下示例说明了这个想法:
\documentclass[11pt]{article}
\pdfoutput=1
\pagestyle{empty}
\usepackage{lipsum}
%% \usepackage[pagewise]{lineno}
%% \linenumbers
\makeatletter
\ifx\@LN\undefined
\def\@LN#1#2{}
\fi
\makeatother
\begin{document}
\lipsum
\lipsum
\lipsum
\end{document}