乐趣区

关于latex:Latex笔记

Latex 3

https://stone-zeng.github.io/…

函数与变量

将函数与变量拆散,都是以 \ 结尾。能够在“命令”中应用下划线辨别单词。

函数

定义函数:<module>_<description>:<arg-spec>
参数 <arg-spec> 由一串字母示意:

  • n,一般(normal)参数,即 {..} 所突围的规范宏参数。
  • N,单个参数,例如一个管制序列或者一个字符。
  • p,原始 TEX 的形参(parameter)指定,即 #1#2 等。
  • T、F,分支条件。此外,还有 D 示意不要应用,W 示意特例。

例子:

% LaTeX2ε
\def\myfunc#1{Hello #1}
% LaTeX3
\cs_new:Npn \my_func:n #1 {Hello~ #1}

def 不同的是,cs_new:Npn 会做反复定义查看。因此 cs_new:Npn 的实际效果其实更靠近 LATEX 2ε 中的 newcommand,只是参数模式更加灵便(newcommand 只能定义不带参数,或者参数形如 [< 可选参数 >]{< 必选参数 1>}... 的命令)。

int_if_even:nTF:它属于 int 模块,用于解决整数。这一函数的作用是判断一个数字(由 n 参数承受)是不是偶数,若是,则执行 T 分支,否则执行 F 分支。

int_if_even:nTF {12}
  {<true code>}
  {<false code>}

int_if_even:nT 示意数字为偶数则执行 T 分支,否则什么也不做;int_if_even:nF 也是相似的。

变量

作用域(scope)、模块名(module)、形容(description)以及变量类型(type),<scope>_<module>_<description>_<type>,没有冒号。
作用域有三个,别离时 c 常数、g 全局变量、l 局部变量。

例子:

% 申明变量
int_new:N l_my_variable_int
int_new:N g_my_variable_int
% 查看变量的值
int_show:N l_my_variable_int % => 0
int_show:N g_my_variable_int % => 0
% 开启一个分组
{
  % 赋值
  int_set:Nn  l_my_variable_int {1}
  int_gset:Nn g_my_variable_int {1}
  % 查看变量的值
  int_show:N l_my_variable_int % => 1
  int_show:N g_my_variable_int % => 1
}
int_show:N l_my_variable_int % => 0
int_show:N g_my_variable_int % => 1

变量类型,又被称为寄存器,

  • box,盒子变量
  • int <– count (integer),计数器,相当于整型变量
  • dim <– dimen,刚性长度(dimension)
  • skip,弹性长度
  • muskip,数学弹性长度(skip in math unit)
  • fp:浮点数(floating points)
  • intarrayfparray:整型、浮点型数组(integer/floating point array
  • bool:布尔型变量
  • regex:正则表达式(regular expression)

公有

公有函数以两个下划线结尾,如 __my_function:nn;公有变量则在作用域标记之后跟着两个下划线,如 l__my_variable_tl

LATEX3 提供了 l3docstrip 宏包,它在文学编程宏包 docstrip 的根底上引入了名字空间的手法。%<@@=myi>引入命名空间,@@代表 __xx,而后应用\@@_ 就是应用的以后命名空间的函数或办法,最初应用 %<@@=> 敞开。

启用环境

documentclass{article}
usepackage{expl3}   % RequirePackage{expl3}

ExplSyntaxOn   % 开启 LaTeX3 编程环境
...
ExplSyntaxOff  % 敞开 LaTeX3 编程环境

在编写宏包或文档类时,@ 符号能够被当成字母应用。

退出移动版