目录

如何使用LATEX3

基本语法

参数类型

声明变量

使用变量

声明函数

实例

实例1

实例2

实例3

实例4

实例5

实例6

实例7

查阅函数文档

宏展开

控制宏展开的意义

​方法一:选择正确的函数变体

方法二:使用\exp_args:函数

方法三:使用\cs_generate_variant:Nn函数

实例

实例1

实例2​​​​​​​​


如何使用LATEX3

基本语法

  • \usepackage{expl3}
  • 启用LATEX3语法:\ExplSyntaxOn
  • 关闭LATEX3语法:\ExplSyntaxOffs
  • 注意事项:
    • 所有空格及换行都会被忽略
    • 下划线(_)和冒号(:)等同于英文字母

参数类型

tl                 凭据表
str                 字符串
int 整型
fp 浮点数
seq 队列
dim 尺度/长度
bool 布尔型
N 接收一个命令,传递命令本身
n

接收一个凭据表

p 接收参数列表(#1#2)
V 与N类似,但是传递命令的值
o         与n类似,但是对凭据表内的内容进行一次展开
x 与n类似,但是对凭据表的内容进行递归展开
T/F         与n类似,用于判断语句中,根据判断结果执行T/F代码
c 接收一个凭据表,返回以其为名字的命令

声明变量

使用new结尾的函数

  • \bool_new:N
  • \int_new:N
  • \seq_new:N
  • \dim_new:N
  • \fp_new:N

使用变量

使用use结尾的函数

  • \bool_use:N
  • \int_use:N
  • \seq_use:N
  • \dim_use:N
  • \fp_use:N

声明函数

使用\cs_set:Npn来声明函数

\documentclass{article}
\usepackage{ctex}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\cs_set:Npn \my_function:n #1{你输了: #1
}
\par\my_function:n {一}
\par\my_function:n {二}
\ExplSyntaxOff
\end{document} 

实例

实例1

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
%LaTex3 代码
\ExplSyntaxOff
\end{document}

实例2

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\int_new:N \l_my_tmpa_int
\int_new:N \l_my_tmpb_int
\int_set:Nn \l_my_tmpa_int {200}
\int_set:Nn \l_my_tmpb_int {10}
\int_eval:n {\l_my_tmpa_int+\l_my_tmpb_int}
\ExplSyntaxOff
\end{document} 

实例3

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\int_step_inline:nn {20}{#1,\quad}
\ExplSyntaxOff
\end{document} 

实例4

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\int_step_inline:nnn {10}{20}{#1,\quad}
\ExplSyntaxOff
\end{document} 

实例5

计算1+2+3+...+100=?

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\int_set:Nn \l_tmpa_int {0}
\int_step_inline:nn {100}{\int_add:Nn \l_tmpa_int{#1}
}
\int_use:N \l_tmpa_int
\ExplSyntaxOff
\end{document} 

或者

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\int_set:Nn \l_tmpa_int{1}
\int_set:Nn \l_tmpb_int{0}
\int_do_while:nNnn {\l_tmpa_int}<{101}{\int_add:Nn \l_tmpb_int {\l_tmpa_int}\int_incr:N \l_tmpa_int
}
\int_use:N \l_tmpb_int
\ExplSyntaxOff
\end{document} 

诸如\int_do_until:nNnn, \bool_do_until:nn 等语句每一次循环就进行一次判断,直到判断为真。

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\int_set:Nn \l_tmpa_int {1}
\int_set:Nn \l_tmpb_int {0}
\int_do_until:nNnn {\l_tmpa_int}>{100}{\int_add:Nn \l_tmpb_int {\l_tmpa_int}\int_incr:N \l_tmpa_int
}
\ExplSyntaxOff
\end{document} 

实例6

外层循环#1,内层循环##1

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\cs_set:Npn \my_factorial:n  #1 {\int_set:Nn \l_tmpa_int {1}\seq_clear:N \l_tmpa_seq\int_step_inline:nn {#1}{\seq_put_right:Nn \l_tmpa_seq {##1}\int_set:Nn \l_tmpa_int {\l_tmpa_int * ##1}}$\seq_use:Nn \l_tmpa_seq {\times}=\int_use:N \l_tmpa_int$
}
\par\my_factorial:n {3}
\par\my_factorial:n {7}
\ExplSyntaxOff
\end{document} 

实例7

\documentclass{article}
\usepackage{expl3}
\usepackage{tikz}
\begin{document}
\ExplSyntaxOn
\begin{tikzpicture}\int_step_inline:nnn {0}{17}{\fp_set:Nn \l_tmpa_fp {20*(#1)*\c_one_degree_fp}\node[minimum~width=1.5mm, fill=blue, draw=none,circle,inner~sep=0pt]at (\fp_eval:n {cos(\l_tmpa_fp)}, \fp_eval:n {sin(\l_tmpa_fp)}){};}
\end{tikzpicture}
\ExplSyntaxOff
\end{document} 

查阅函数文档

https://mirrors.dgut.edu.cn/CTAN/macros/latex/contrib/l3kernel/interface3.pdf

宏展开

控制宏展开的意义

方法一:选择正确的函数变体

方法二:使用\exp_args:函数

方法三:使用\cs_generate_variant:Nn函数

实例

实例1

实例2​​​​​​​

latex3的基本介绍相关推荐

  1. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  2. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  3. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  4. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

  5. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

  6. Pytest - 使用介绍

    1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...

  7. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  8. k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...

  9. Tensorrt一些优化技术介绍

    Tensorrt一些优化技术介绍 Figure 1. A quantizable AveragePool layer (in blue) is fused with a DQ layer and a ...

  10. 网路摄像头技术参数介绍

    网路摄像头技术参数介绍 星光级图像传感器 4MP (2592 × 1520) @30fps SmartH.265 / H.265+ / H.265 / SmartH.264 / H.264+ / H. ...

最新文章

  1. Hive SQL 监控系统 - Hive Falcon
  2. 皮一皮:原来微信备注还有这个用...
  3. 一秒等于多少毫秒_使用kibana对电影一秒钟影评数据测试,详述配图演示如何使用收藏了...
  4. 130506datafile和tablespace offline区别
  5. Spring Cloud微服务实战:外卖订餐系统
  6. html 微博下拉菜单,jQuery实现模仿微博下拉滚动条加载数据效果
  7. JSP中request内置对象
  8. 河流干涸的原因可能是水循环被破坏
  9. 自己写的【手机号码归属地查询软件】
  10. 面试官常问的web前端问题大全(10道面试真题祝你旗开得胜)
  11. UI设计中有哪些常见的风格?
  12. 假设检验基本思想与步骤
  13. 计算机基础技能培养,计算机基础技能培养大纲(非计算机专业).doc
  14. 【技术贴】Windows图片和传真查看器打开图片慢,正在生成预览的解决办法!
  15. 360 企业安全推出的 SD-WAN 会抢谁的生意?| 访谈
  16. 页面在微信端禁止缩放
  17. Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
  18. 内蒙农信携手星环科技建设农信大数据平台,激活金融业务创新
  19. 禅与摩托车维修艺术摘录
  20. .class .class 和 .class.class 和 .class>.class 比较

热门文章

  1. 计算机与打印机脱机后怎么共享,电脑重启后共享打印机脱机的解决方法
  2. windows 7 官方旗舰版
  3. 平衡二叉树的插入与删除
  4. 树莓派yocto构建
  5. Android - View 和 ViewGroup
  6. Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java17 的新特性
  7. Excel K4宏病毒专杀
  8. css 设置打印a4,CSS设置A4纸大小。
  9. 【转载】英语动词第三人称s的发音规则
  10. 【工具】我的键盘(机械键盘)快捷键设置