latex3的基本介绍
目录
如何使用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. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...
- python:Json模块dumps、loads、dump、load介绍
20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...
- pytorch学习笔记(九):PyTorch结构介绍
PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...
- Python字节码介绍
了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...
- Pytest - 使用介绍
1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- k8s核心组件详细介绍教程(配超详细实例演示)
本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...
- Tensorrt一些优化技术介绍
Tensorrt一些优化技术介绍 Figure 1. A quantizable AveragePool layer (in blue) is fused with a DQ layer and a ...
- 网路摄像头技术参数介绍
网路摄像头技术参数介绍 星光级图像传感器 4MP (2592 × 1520) @30fps SmartH.265 / H.265+ / H.265 / SmartH.264 / H.264+ / H. ...
最新文章
- Hive SQL 监控系统 - Hive Falcon
- 皮一皮:原来微信备注还有这个用...
- 一秒等于多少毫秒_使用kibana对电影一秒钟影评数据测试,详述配图演示如何使用收藏了...
- 130506datafile和tablespace offline区别
- Spring Cloud微服务实战:外卖订餐系统
- html 微博下拉菜单,jQuery实现模仿微博下拉滚动条加载数据效果
- JSP中request内置对象
- 河流干涸的原因可能是水循环被破坏
- 自己写的【手机号码归属地查询软件】
- 面试官常问的web前端问题大全(10道面试真题祝你旗开得胜)
- UI设计中有哪些常见的风格?
- 假设检验基本思想与步骤
- 计算机基础技能培养,计算机基础技能培养大纲(非计算机专业).doc
- 【技术贴】Windows图片和传真查看器打开图片慢,正在生成预览的解决办法!
- 360 企业安全推出的 SD-WAN 会抢谁的生意?| 访谈
- 页面在微信端禁止缩放
- Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
- 内蒙农信携手星环科技建设农信大数据平台,激活金融业务创新
- 禅与摩托车维修艺术摘录
- .class .class 和 .class.class 和 .class>.class 比较