我需要根据一些条件组合来调用各种命令。由于可能的情况数量巨大,在调用的命令名称中使用变量会非常方便。可以吗?
以下是一个简化的示例:
假设我定义了一组具有组合名称的命令,例如:
\newcommand{\mycommandUpLeft}[1]{...something using #1...}
\newcommand{\mycommandUpRight}[1]{...something else using #1...}
\newcommand{\mycommandDownLeft}[1]{...something else using #1...}
\newcommand{\mycommandDownRight}[1]{...something else using #1...}
我想从另一个元命令调用它们,例如:
\newcommand{\metacommand}[3]{%
\mycommand#1#2{#3} % wished behavior, but not possible using this syntax
}%
其中参数 1 和 2 分别是垂直和水平方向。使用方法如下:
\metacommand{Down}{Left}{some content}
期望它充当
\mycommandDownLeft{some content}
笔记 :
使用\ifthenelse
fromifthen
包可能是一种解决方法,但并不理想,因为它需要非常长且冗余的树结构。
谢谢!
答案1
\documentclass{article}
\newcommand{\mycommandUpRight}[1]{Up Right of #1...}
\newcommand{\mycommandDownLeft}[1]{Down Left of #1...}
\newcommand\metacommand[3]{\csname mycommand#1#2\endcsname{#3}}
\begin{document}
\mycommandDownLeft{some content}
\metacommand{Down}{Left}{other content}
\metacommand{Up}{Right}{third content}
\end{document}