将 .txt 文件链接到 LaTeX

将 .txt 文件链接到 LaTeX

我想知道是否有任何包/附加组件/程序可以将.txt文件(或一些简单的文本文件)链接到文档.tex

这就是我要找的。我有一个这样的 LaTeX 文档:

\begin{document}
First number: ${REF1}$

Second number: ${REF2}$
\end{document}

还有.txt这样的文档:

REF1 = 123
REF2 = 221

并且REF#会自动用数字替换,如果.txt文件被修改,则会更新。

(注:我正在使用 Texmaker)

答案1

您可以加载该文件并将每一行解释为一个键值对。

\begin{filecontents*}{\jobname.txt}
REF1 = 123
REF2 = 221
\end{filecontents*}

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\loadkeyfile}{m}
 {
  \tl_gset_from_file:Nnn \g__razero_input_tl
   { \endlinechar=`, }
   { #1 }
  \keys_set:nV { razero/keyfile } \g__razero_input_tl
 }
\DeclareExpandableDocumentCommand{\usekey}{m}
 {
  \tl_use:c { g_razero_key_#1_tl }
 }

\tl_new:N \g__razero_input_tl
\keys_define:nn { razero/keyfile }
 {
  unknown .code:n = \tl_new:c { g_razero_key_ \l_keys_key_tl _tl }
                    \tl_gset:cn { g_razero_key_ \l_keys_key_tl _tl } { #1 }
 }
\cs_generate_variant:Nn \keys_set:nn { nV }
\ExplSyntaxOff

\loadkeyfile{\jobname.txt}

\begin{document}

--First number: \usekey{REF1}--

--Second number: \usekey{REF2}--

\end{document}

环境filecontents*只是为了使示例自成一体。在参数中\loadkeyfile使用您的文件名。

破折号只是为了表明没有引入不需要的空间。

在此处输入图片描述

逐行扫描输入文件的另一种定义。

\begin{filecontents*}{\jobname.txt}
REF1 = 123
REF2 = 221
\end{filecontents*}

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\loadkeyfile}{m}
 {
  \ior_open:Nn \g__razero_input_stream { #1 }
  \ior_map_inline:Nn \g__razero_input_stream
   {
    \keys_set:nn { razero/keyfile } { ##1 }
   }
 }
\DeclareExpandableDocumentCommand{\usekey}{m}
 {
  \tl_use:c { g_razero_key_#1_tl }
 }

\ior_new:N \g__razero_input_stream
\keys_define:nn { razero/keyfile }
 {
  unknown .code:n = \tl_new:c { g_razero_key_ \l_keys_key_tl _tl }
                    \tl_gset:cn { g_razero_key_ \l_keys_key_tl _tl } { #1 }
 }
\ExplSyntaxOff

\loadkeyfile{\jobname.txt}

\begin{document}

--First number: \usekey{REF1}--

--Second number: \usekey{REF2}--

\end{document}

相关内容