使用带有下划线的命令行输入进行 detokenize

使用带有下划线的命令行输入进行 detokenize

我正在调用一个脚本,在其中向 LaTeX 提供命令行输入:

pdflatex "\def\myvar{given_test} \input{figures.tex}"

然后在脚本中,我尝试使用这个“given_test”输入并打印它:

\textbf{filename: \myvar}

这会破坏 LaTeX,然后我尝试使用 detokenize

\textbf{filename: \detokenize{\myvar}}

这只会打印文本“\myvar”

下划线是必需的,因为我们正在从使用下划线作为文件标识符的更复杂的管道中读取。

那么我怎样才能读取里面的内容\myvar而不破坏 LaTeX。

答案1

结合指导方针处理文本中的特殊 LaTeX 字符,你可以在 -ing\myvar之前进行扩展:\detokenize

在此处输入图片描述

\documentclass{article}
\usepackage[T1]{fontenc}% http://ctan.org/pkg/fontenc
\def\myvar{given_test}
\begin{document}
\textbf{filename: \detokenize\expandafter{\myvar}}
\end{document} 

答案2

改变你的管道来做这件事应该不难

pdflatex "\edef\myvar{\detokenize{given_test}}\input{figures.tex}"

例如figures.tex这样的:

\documentclass{article}

\begin{document}

Here's the file name: \texttt{\myvar}

\input{\myvar}

\end{document}

given_test.tex包含

Hello World!

使用上述命令行进行编译

在此处输入图片描述

因此您会看到变量指向正确的文件名。

请注意,如果您需要\myvar打字机字体以外的其他字体,请加载

\usepackage[T1]{fontenc}

在文件中变得必要。

相关内容