专栏名称: LaTeX工作室
欢迎光临分享与学习LaTeX的王国
目录
相关文章推荐
51好读  ›  专栏  ›  LaTeX工作室

LaTeX3 系列教程之二:基本语法一

LaTeX工作室  · 公众号  ·  · 2025-01-08 21:32

正文

点击👇 LaTeX工作室 关注公众号
精致美好科研生活 从 LaTeX 开始!


一、注释与空白

LaTeX3 仍以 % 为注释符,% 至行未的所有内容都会被忽略。dtx 格式注释规则较复杂,但规则仍与 LaTeX2e 一样。

除了少量殊情况外,LaTeX3忽略所有空白(包括空格、制表、换行符等)。而 ~ 和 '\ ' 可以用来生成空白,不会被忽略(行首除外)。

如下示例:

\documentclass{article}
\begin{document}
\ExplSyntaxOn

\cs_new:Npn\my_funa:nn#1 #2

  {    #1    #2    #1    }

\my_funa:nn{ Hello World! }{~}{ Hello World! }

\ExplSyntaxOff
\end{document}

等效于:

\documentclass{article}
\begin{document}
\ExplSyntaxOn
\cs_new:Npn \my_funa:nn #1#2
  { #1 #2 #1 }
\my_funa:nn { Hello World! } { ~ }
{ Hello World! }
\ExplSyntaxOff
\end{document}

将输出: HelloWorld! HelloWorld!HelloWorld! 。(接下来的内容解释原因)

二、函数

LaTeX3 内置了一系列的预定义函数,同时还支持用户自定义新函数。

函数是简单的带参或不带参宏,函数会展开(Expand)则为置换文本(Replacement Text)。

2.1 特殊的函数

LaTeX3 预定义的函数中,几乎大部分都符合上一节介绍的命名规则。但因功能需要,还是有少量的函数不符合命名规则。所幸,这些函数并不多,而且很容易识别。

前面介绍的 \ExplSyntaxOn \ExplSyntaxOff 就是两个典型的例子。更多的函数将在后续章节中介绍。

启用与禁用 L3 语法

由于 L3 使用了 _ : 符号来提供结构,这与 LaTeX2e 本身的语法不兼容。所有要使用 L3 语法时,必须先用 \ExplSyntaxOn 来启用;而要用恢复 LaTeX2e 语法时,则需要使用 \ExplSyntaxOff 来禁用。

(如果你写过 LaTeX2e 宏包,可以把它们看作和 \makeatletter \makeatother 的功能“类似”。)

后面讲解示例时,不再解释这两个命令了。

2.2 参数

函数可以带参数,也可以不带参数。使用标准命名规则的函数,其参数会由参数说明符指示出来,包含参数数量及参数类型等。

在函数定义时,可以使用 #1 #2 等符号来引用参数(其它语言中的形参)。LaTeX3 最多支持 9 个参数。

在执行(展开)函数时,会从函数后面的输入流中吸收参数(其它语言中的实参),并按顺序被传递给函数。

2.3 使用已有函数

在示例中,首先使用了 \cs_new:Npn 函数来定义一个新函数,它需要三个参数:函数名( N )、函数参数( p )和置换文本( n )。

实际执行时,会按如下方式传递参数:

  1. \my_funa:nn 传递给第一个参数( N 类型,吸收一个凭据);
  2. #1#2 传递给第二个参数( p 类型,吸收一个参数列表);
  3. { #1 #2 #1 } 传递给第三个参数( n 类型,吸收一个凭据表)。

这个函数只起声明函数的作用,并不会输出任何内容。

接下来,使用了 \my_funa:nn 函数,它会按如下方式传递参数:

  1. { Hello World! } 传递给第一个参数( n 类型, #1 );
  2. { ~ } 传递给第二个参数( n 类型, #2 )。






请到「今天看啥」查看全文