在我的代码中,我更改为“2 列”模式输入:
\twocolumn[{
我正在尝试通过创建一个新命令来简化此代码:
\renewcommand{\twocolumn}{\twocolumn[{}
是否可以在这个新命令中插入括号和大括号?我这样做时遇到很多错误。
答案1
序列
\renewcommand{\twocolumn}{\twocolumn[{}
会定义一个命令\twocolumn
,除其他外,它会调用自身。你会得到某种递归循环,TeX capacity exceeded
当递归过程中积累了太多的左括号和左花括号时,编译可能会以错误消息或类似信息终止。
此外,这\twocolumn
是一个可能在宏包等中使用的宏。重新定义它可能会导致依赖于 的原始含义的(包)代码出现问题\twocolumn
。
也许定义自己的宏来调用\twocolumn
可能是一个选择:
\makeatletter
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
}%
\makeatother
该命令\calltwocolumn
将产生以下标记:
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\expandafter\@gobble\string} %
-chain会在执行 之前\expandafter
打开\romannumeral
-expansion 。反过来,-expansion 会导致字符串化并吞噬右括号,然后终止而不提供任何标记。\twocolumn
\romannumeral
有些人不太愿意使用\makeatletter
。你可以使用 来避免这种情况\csname
:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\romannumeral0\csname @gobble\expandafter\endcsname\string} %
}%
您也可以\iffalse
按照 Gustavo Mezzetti 的建议避免这种情况:
\newcommand\calltwocolumn{%
\expandafter\twocolumn
\expandafter[%
\expandafter{%
\iffalse}\fi
}%