我正在尝试使用 KOMA-Script 命令\newcaptionname
,该命令以宏名作为其第二个参数,但我需要其中的空格:
\documentclass{scrartcl}
\newcaptionname{english}{\namewithoutspaces}{With spaces.}
\newcaptionname{english}{\csname name with spaces\endcsname}{Without Spaces} % fails
\usepackage[english]{babel}
\begin{document}
\namewithoutspaces
\csname name with spaces\endcsname
\end{document}
\namewith
定义正确,但显然 的定义\csname name with spaces\endcsname
失败。我知道这与扩展有关,但我认为我仍然没有完全理解这个概念(以及所有相关命令,如\expandafter
、\noexpand
、\edef
、...)。
我应该如何修改
\newcaptionname{english}{\csname name with spaces\endcsname}{Without Spaces}
让它工作?
答案1
很难理解为什么你需要这个,但是
\documentclass{scrartcl}
\newcaptionname{english}{\namewithoutspaces}{With spaces.}
\def\tmp{\newcaptionname{english}}
\expandafter\tmp\csname name with spaces\endcsname{Without Spaces} % works
\usepackage[english]{babel}
\begin{document}
\namewithoutspaces
\csname name with spaces\endcsname
\end{document}