我有一个用于设置协议的类文件。我想定义一个命令来
- 选择要使用参数包含的样板文本
- 将参数传递给包含的文件以运行测试并选择正确的文本
\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}