我想将\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
按照要求。