写入和读取重命名(或修改)的“.aux”文件

写入和读取重命名(或修改)的“.aux”文件

编译(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}

相关内容