如何将参数传递给`\input{}`

如何将参数传递给`\input{}`

我有一个用于设置协议的类文件。我想定义一个命令来

  1. 选择要使用参数包含的样板文本
  2. 将参数传递给包含的文件以运行测试并选择正确的文本

\dispute在我的 MWE 中,如果我使用两个参数 {US} 和 {DE}调用命令,disputeUS则应包含该文件,并使用特拉华州作为管辖区。在任何其他情况下,纽约应为管辖区。包含的 MWE 无法按预期工作。它包含正确的文件,但未以正确的方式将第二个参数传递给包含的文件。条件永远不会成立,管辖权始终是纽约。

\begin{filecontents}{test-disputeUS}
\section{Governing law. Arbitration}
\label{sec:dispute}

The parties agree that the Agreement shall be governed by the laws of the
State of \ifstr{##2}{DE}{Delaware}{New York}, USA, without giving effect to
its principles of conflict of laws
\end{filecontents}

\documentclass{scrartcl}

\newcommand{\dispute}[2]{\input{test-dispute#1}%
% To control the string 
\par\bigskip\noindent Control string: The state is \ifstr{#2}{DE}{Delaware}{New York}}

\frenchspacing
\begin{document}

\dispute{US}{DE}

\end{document}

我认为有一些简单的解决方案,但我找不到。任何帮助或提示都将不胜感激。

答案1

参数只能在宏定义范围内使用,因此##2文件中的参数是没有意义的。

\begin{filecontents}{test-disputeUS}
\section{Governing law. Arbitration}
\label{sec:dispute}

The parties agree that the Agreement shall be governed by the laws of the State of
\ifstr{\control}{DE}{Delaware}{New York}, USA, without giving effect to its principles of
conflict of laws

\end{filecontents}

\documentclass{scrartcl}

\newcommand{\control}{}% initialize
\newcommand{\dispute}[2]{%
  \renewcommand\control{#2}%
  \input{test-dispute#1}%
% To control the string
\par\bigskip\noindent Control string: The state is \ifstr{#2}{DE}{Delaware}{New York}}

\frenchspacing
\begin{document}

\dispute{US}{DE}

\dispute{US}{NY}

\end{document}

在此处输入图片描述

相关内容