我将简单展示一下发生了什么:
documentclass 定义位于文件的其他位置。我正在使用 TeXnicCenter,因此交互模式不是一种选择。
答案1
存在多个错误:
命名expl3
约定明确指出(参见手册第 3.2 节expl3
,手册链接,档案链接):
3.2 正式命名语法
我们现在将更详细地研究这些名称的语法。
LATEX3 中的函数名称由三部分组成:
\<module>_<description>:<arg-spec>
这意味着:
不是可选的而是强制性的,即使对于没有任何参数的宏也是如此。module
和 的description
内容是“任意的”,因为它们应该是唯一的并且遵循通常的命名约定。
还引入:
了,以便明确区分function
和variable
类似\l_tmpa_seq
等。
因此使用\cs_new:Nn \hello_internal: {...}
或\cs_new_nopar:Nn \hello_internal: {}
(以前建议用于没有参数的宏)。
另一个问题是\hello:
无法在区域外访问\ExplSyntaxOn...\ExplSyntaxOff
,因为它\hello:
会被解释为\hello
后面跟着一个:
令牌,但\hello
这里没有定义的命令。
要访问某些“包装器”(或“导入器”)的功能,expl3
必须定义宏。
但是可以使用“普通”宏名expl3
,其p
语法如下:
简短示例:
\cs_new:Npn \mynicecommand #1#2 { Foo~from~#1~and~#2 }
采用哪种方法取决于实际需求(和偏好)。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\cs_new_nopar:Nn \hello_internal: {hello}
\cs_new:Nn \helloother_internal: {hello~other}
\newcommand{\hello}{%
\hello_internal:
}
\newcommand{\helloother}{%
\helloother_internal:
}
\ExplSyntaxOff
\begin{document}
\hello
and
\helloother
\end{document}