定义命令 \file#1 并将其与 \input 命令一起使用,并计数器 \thefile#1

定义命令 \file#1 并将其与 \input 命令一起使用,并计数器 \thefile#1

我想定义一个命令,\file#1以便与一起使用\input{\file#1},其中#1给出了一个条目,以及计数器\thefile#1

MWE 是下一个代码

\documentclass{article}
\usepackage{xstring}
\newcommand{\fileone}{testfile}
\newcommand{\file}[2]{%
\IfStrEqCase{#1}{%
    {one}{%
        \newcounter{file#1}\setcounter{file#1}{#2}\thefileone
        \input{\fileone}
        }
}}

\begin{document}
Hello, \file{one}{20}
\commandone
\end{document}

并且该文件testfile.tex\commandone定义为 \newcommand{\commandone}{This a test in file "\fileone"}

我想用“#1”替换“one”这个词,以便在 的定义上使用\thefile#1和。\input{\file#1}\file

答案1

动态定义一个新的计数器并不总是一个好主意,但是这样做是可行的:

从其他宏或标记生成命令序列是通过来完成的\csname file#1\endcsname,例如,对于计数器输出也是相同的\csname the#1\endcsname

我建议使用\InputIfFileExists{}{}{}而不是\input{...}

\documentclass{article}
%\usepackage{xstring}
\newcommand{\fileone}{testfile}

\newcommand{\filethree}{otherfile}

\begin{filecontents}{\filethree.tex}
\newcommand{\commandthree}{This a test command in file "otherfile"}
\end{filecontents}



\newcommand{\file}[2]{%
  \newcounter{file#1}\setcounter{file#1}{#2}\csname thefile#1\endcsname%
  \InputIfFileExists{\csname file#1\endcsname}{}{}%
}


\begin{document}
Hello, \file{one}{20}
\commandone

Now: \file{three}{1000}

\commandthree
\end{document}

在此处输入图片描述

相关内容