将行号的引用写入文件

将行号的引用写入文件

我想将\lineref命令生成的实际行号写入外部文件。这些行被正确引用(经过 2 次编译),但写入文件不起作用。这是我的 MWE,我(谦虚的)尝试取消注释以说明我想要做什么:

\documentclass[10pt,a4paper]{article}
\usepackage{lineno}
\newwrite\tempfile

\begin{document}
\immediate\openout\tempfile=fooref.tex
\begin{linenumbers}*
foo \linelabel{lne:foo1} foo

foo \linelabel{lne:foo2} foo
\end{linenumbers}
\lineref{lne:foo1}
\lineref{lne:foo2}

%\immediate\write\tempfile{\lineref{lne:foo1}} % <- how to do it??
%\immediate\write\tempfile{\lineref{lne:foo2}} % <- how to do it??

\immediate\closeout\tempfile
\end{document}

生成的 fooref.tex 应该只包含行号:

1
2

答案1

我不确定你会用这个文件做什么,但这里有一种方法可以满足你的需要:

\documentclass[10pt,a4paper]{article}
\usepackage{lineno,refcount}

\newwrite\linenumbersfile
\newcommand{\writelineref}[1]{%
  \immediate\write\linenumbersfile{\getrefnumber{#1}}%
}

\begin{document}
\immediate\openout\linenumbersfile=\jobname.num
\begin{linenumbers}*
foo \linelabel{lne:foo1} foo

foo \linelabel{lne:foo2} foo
\end{linenumbers}
\lineref{lne:foo1}
\lineref{lne:foo2}

\writelineref{lne:foo1}
\writelineref{lne:foo2}

\immediate\closeout\linenumbersfile
\end{document}

我改变了命名方案,以避免破坏文件。.num文件中的正确注释需要运行两次 LaTeX,就像处理参考文献时一样。这样\getrefnumber我们就可以确保参考文献的可扩展性。

.num文件包含

1
2

按照要求。

相关内容