10 如何使用 LaTeX3自定义一个命名中包含特殊字符的命令

发布于 2024-05-19 11:49:31

我想定义一个命名中包含特殊字符的自定义命令,我借助 LaTeX3的 xparse 宏包实现命令,并且用\csname\endcsname包裹,使命名允许掺杂特殊字符(数字、下划线等),代码如下:

\documentclass{article}
\usepackage{xparse}

% 定义命令

\expandafter\NewDocumentCommand\csname cmd_1_a\endcsname{m O{}}{123 #1 #2}


\begin{document}

% 使用命令
\csname cmd_1_a\endcsname{4}[6]


\end{document}

但我希望在调用该命令时依然和普通命名的自定义命令一样调用,无需输入\csname, \endcsname,而只需用\cmd_1_a{...}[...]就可以。

请问该怎么实现?或者有无其他方法创建一个包含特殊字符命名的自定义命令,能很方便地调用,并且可以包含可选参数,方便宏展开?谢谢。

查看更多

关注者
0
被浏览
641
雾月
雾月 2024-05-20
这家伙很懒,什么也没写!
\documentclass{article}

\ExpandArgs{c}\NewDocumentCommand{cmd_1_a}{m O{}}{123 #1 #2}
\def\?#1 {\csname#1\endcsname}

\begin{document}

\?cmd_1_a {4}[6]

\end{document}

命令名完成后加上一个空格。还有不加空格的方法(使用 \peek_analysis_map_inline:n,不可展)。

2 个回答
夏大鱼羊-xkwxdyy
这家伙很懒,什么也没写!

可以用 \UseName 接口,以及貌似 2021 还是哪个版本(记不清了)之后 xparse 不需要显示载入。

\documentclass{article}

\expandafter\NewDocumentCommand\csname cmd_1_a\endcsname{m O{}}{123 #1 #2}

\begin{document}

\UseName{cmd_1_a}{4}[6]


\end{document}

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览