LaTeX中定义新命令和环境

文章目录

  • 一、newcommand命令
    • 1、简单字符串替换
    • 2、指定参数
    • 3、指定参数默认值
  • 二、renewcommand命令
  • 三、newenvironment定义新环境
  • 四、newenvironment与newcommand命令嵌套使用
  • 五、renewenvironment重定义已有环境
  • 六、总结和代码
    • 1、总结
    • 2、代码

这一讲中,我们主要讨论LaTeX中命令和环境的定义与重定义的方法。

一般都在导言区进行命令的定义和重定义。

一、newcommand命令

newcommand用于定义一个命令,需要指定新定义的命令的名称,参数个数,默认参数值,以及具体定义。

1、简单字符串替换

例如,

定义一个不带参数的PRC命令(PRC是自己取的)。

设该命令的具体定义是“People’s Republic of China”(具体定义是根据自己的需要写哒),并对“China”执行emphasize 强调命令。

这个命令实际上是一个简单的字符串替换命令。

定义好了之后,我们就可以在正文区使用PRC这个命令。

直接在正文区写上“\PRC”即可引用此命令。

编译并查看结果:

显然,只需要修改PRC命令的定义,就可以修改排版结果。

而在正文区,只需要使用PRC命令,并不需要做出任何修改。

这就是LaTeX排版中内容与格式分离的基本思想。

2、指定参数

我们也可以为newcommand命令定义的新命令指定参数。

参数个数最多是9个。用1~9来表示。

用诸如#1,#2,…,#9的方式使用各参数。

例如:

用**#1表示第一个参数,用#2**表示第二个参数。

(1)第一个例子,如图:

在正文区,使用定义的新命令。

编译运行查看结果:

(2)第二个例子,如图:

在正文区,使用定义的新命令。

编译运行查看结果:

如果定义的命令需要参数,则使用该命令时需要为其提供必要的参数。

例如,在loves命令中,“猫儿”对应“#1”参数,“鱼”对应“#2”参数。

在hatedby命令中,“猫儿”对应“#1”参数,“萝卜”对应“#2”参数。

3、指定参数默认值

还可以为newcommand命令定义的命令的参数指定默认值。

注意,只能为第一个参数指定默认值

此时第一个参数称为该命令的可选参数。

在使用该命令时,如果需要为第一个参数提供实际参数,则该参数需要用方括号指定。

例如,

定义一个新命令love,有三个参数,第一个参数默认值是“喜欢”,接下来是该命令的具体定义。

可以用不同的方式使用该命令。

查看结果:

解释:

(1)在love的第一种使用方式中,只提供了两个参数。此处的“猫儿”对应“#2”参数,“鱼”对应“#3”参数。“#1”参数取默认值“喜欢”。

(2)在love的第二种使用方式中,提供了三个参数。此处的“猫儿”对应“#2”参数,“鱼”对应“#3”参数。方括号[]指定的可选参数“最爱”,对应于“#1”,从而取代了该参数的默认值“喜欢”。

二、renewcommand命令

我们也可以使用renewcommand重新定义已有的命令。

renewcommand命令与newcommand命令的用法完全一致,唯一的区别是renewcommand只能作用于已有的命令

例如,可以将abstractname重新定义为“内容简介”。

该命令会被abstract环境自动使用。

在正文区写上:

编译运行并查看结果:

注意,其标题为重新定义的abstractname命令的内容。

我们可以再次更改。

正文区不用动,咱们再次查看结果:

三、newenvironment定义新环境

newenvironment命令与newcommand命令类似。

需要指定环境名称,参数个数,首参数默认值,环境前定义,环境后定义。

例如,

定义一个新的摘要环境myabstract,它有一个可选参数,其默认值为“摘要”。

在“环境前定义”中,用small命令设定环境中内容的字号

并指定**#1**参数的排版方式。

begin命令开始quotation环境。

在“环境后定义”中,用end命令结束quotation环境。

注意,在“环境前定义”和“环境后定义”两端,使用大括号

正文区,用begin和end命令,使用自定义的myabstract环境。

编译运行并查看结果:

当然,也可以为myabstract环境指定可选参数。

查看结果:

在此,“我的摘要”对应**#1**参数,并取代了第一个参数的默认值“摘要”。

四、newenvironment与newcommand命令嵌套使用

我们可以在newenvironment环境前定义中,用newcommand定义一个使用newenvironment参数的命令,并将该新命令应用于环境后定义中,以解决环境后定义中无法使用参数的问题。

如图:

此处,“环境前定义”中的quotesource命令使用了新环境quotation的**#1**参数。

并在“环境后定义”中,使用了新命令。

正文区,使用beginend命令,使用新定义的环境。

编译运行并查看结果:

注意,新环境Quotation的必选参数“易…乾”对应**#1**参数,并传递到quotesource命令中。

而且,在“环境后定义”中,使用了quotesource命令,

五、renewenvironment重定义已有环境

newenvironment用法一致,但前提是要有已有环境。

六、总结和代码

1、总结

这一讲,我们主要讨论了命令和环境的定义与重定义,使用命令和环境的定义和重定义,达到内容与格式分离的目标。

这是LaTeX排版中的一个重要理念。

在LaTeX排版中,一定要避免直接在正文中使用原始的和基础的排版命令。

当然,还可以定义和重定义带星号的短命令与环境。

详情请大家查阅相关资料。

2、代码

tex文件代码:

%导言区
\documentclass{ctexart} %ctexbook,ctexrep%newcommand--定义命令
%命令只能由字母组成,不能以\end开头
%\newcommand<命令>[<参数个数>][<首参数默认值>]{<具体定义>}%\newcommand可以是简单字符串替换,例如:
%使用\PRC相当于People's Republic of \emph{China} 这一串内容
\newcommand\PRC{People's Republic of \emph{China}}%newcommand也可以使用参数
%参数个数可以从1到9,使用时用 #1,#2,...,#9表示
\newcommand\loves[2]{#1 喜欢 #2}
\newcommand\hatedby[2]{#2 不受 #1 喜欢}%\newcommand的参数也可以有默认值
%指定参数个数的同时,指定了首个参数的默认值,那么这个命令的第一个参数
%就成为可选的参数(需要使用中括号指定)
\newcommand\love[3][喜欢]{#2#1#3}%renewcommand--重定义命令
%与\newcommand命令作用和用法相同,但只能用于已有命令。
%\renewcommand<命令>[<参数个数>][<首参数默认值>]{<具体定义>}
\renewcommand\abstractname{简介}%定义和重定义环境
%\newenvironment{<环境名称>}[<参数个数>][<首参数默认值>]
%               {<环境前定义>}
%               {<环境后定义>}%为book类中定义摘要(abstract)环境
\newenvironment{myabstract}[1][摘要]%
{\small\begin{center} \bfseries #1 \end{center} %\begin{quotation}} %{\end{quotation}}%环境参数只有<环境前定义>中可以使用参数,
%<环境后定义>中不能再使用环境参数。
%如果需要,可以先把前面得到的参数保存在一个命令中,在后面使用:
\newenvironment{Quotation}[1] %
{\newcommand\quotesource{#1} %\begin{quotation}} %{\par \hfill--- 《\textit{\quotesource}》%\end{quotation}}%\renewenvironment{<环境名称>}[<参数个数>][<首参数默认值>]
%               {<环境前定义>}
%               {<环境后定义>}%正文区(文稿区)
\begin{document}\PRC\loves{猫儿}{鱼}\hatedby{猫儿}{萝卜}\love{猫儿}{鱼}\love[最爱]{猫儿}{鱼}\begin{abstract}这是一段摘要...\end{abstract}\begin{myabstract}[我的摘要]这是一段自定义格式的摘要...\end{myabstract}\begin{Quotation}{易$ \cdots $乾}初九,潜龙勿用。\end{Quotation}\end{document}

LaTeX中定义新命令和环境相关推荐

  1. Latex中定义、定理、引理、证明 设置方法总结

    Latex中定义.定理.引理.证明 设置方法总结 在LaTex中需要有关定理.公理.命题.引理.定义等时,常用如下命令 \newtheorem{定理环境名}{标题}[主计数器名] \newtheore ...

  2. 在 LaTeX 中直接作图:Picture环境

    原  文:在 LaTeX 中直接作图:Picture环境 译  者:Xovee 翻译时间:2020年11月3日 在 LaTeX 中直接作图:Picture环境 如果你需要在文档中加入一些简单的图形,p ...

  3. 在 LaTeX 中定义变量

    介绍 在撰写科研论文时,我们经常给自己的模型起一个方便使用的名字,例如 ResNet 等.通常这个模型名字(或者其他类似的东西)会在论文中出现多次.我们在写论文的时候,可能有时候 需要换个模型名 输错 ...

  4. Linux中使用export命令设置环境变量

    Linux export 命令 2011-08-31 22:36:39|  分类: 命令总结|举报|字号 订阅 功能说明:设置或显示环境变量. ############################ ...

  5. Linux 开发中的常用命令 ( Cygwin 环境也同样适用)

    ls #以默认方式显示当前目录文件列表 ls –a #显示所有文件包括隐藏文件 ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ls –color=never *.so ...

  6. latex中的引用命令\citep{}和\citet{}

    先看看我的.bib文件(只截取部分对本文有用的信息). 1个作者 2个作者 3个作者 \citep{} 使用命令\citep{}引用只有1个作者的论文之后的效果如下: \citep{Gusfield: ...

  7. latex中的重音命令和特殊字母(部分)

    重音命令 特殊字母

  8. word中定义新编号格式时后面出现空白解决方法

    问题: 解决方法:1.选中定义的编号: 2.打开段落选项卡下的制表位: 3.更改制表位的位置,如果没有要求直接点击全部清除即可,最后点击确定.

  9. latex怎么打区间_Latex中定义、定理、引理、证明 设置方法总结

    Latex中定义.定理.引理.证明 设置方法总结 在LaTex中需要有关定理.公理.命题.引理.定义等时,常用如下命令 \newtheorem{定理环境名}{标题}[主计数器名] \newtheore ...

最新文章

  1. 怎么把文字变成图形_PPT 中实现文字矢量化
  2. ajax提交后立刻刷新,Ajax提交表单页面刷新很快的解决方法
  3. 【趋势】中国移动阅读市场AMC模型+实力矩阵+趋势预测
  4. python函数不定参数求和
  5. 【算法21】从1到n的正数中1的出现次数
  6. 智能DNS及其工作原理: CDN实现原理
  7. 浅谈Java中的各种锁
  8. linux tomcat 进程杀掉_Linux下启动停止查看杀死Tomcat进程
  9. Hive安装与配置详解
  10. 阿里巴巴矢量图标库的使用
  11. docker镜像命令
  12. 大一计算机php认证考试,2017年计算机基础大一考试试题【附答案】.doc
  13. 这是一封摘抄的情书有点长你读不完也没关系
  14. c#应用:简单的图片查看器
  15. shell中各种括号(),[],(()),[[]],{}等的作用大全及示例
  16. coreldraw x5 选择工具快捷键_CorelDRAW X5实用教程:X5版本常用快捷键
  17. 系统内存占用率高导致电脑卡顿的解决方案
  18. logN²是O(N)的
  19. HTML5和CSS3扁平化风格
  20. 推荐贝塔斯曼书友会淘宝旗舰店

热门文章

  1. 谷歌大脑提出VeLO优化器,无需调参,最高比Adam快16倍!
  2. 阿西莫夫:编造幻想与使之跟事实融为一体是两件事
  3. 到底什么是叶脊网络(Spine-Leaf)?
  4. mysql字段长度计算
  5. 腾讯搜搜soso升级之路
  6. 联发科射频工程师题目_【MTK联发科技射频工程师面试】意外接到联发科人力资...-看准网...
  7. 传销分子为什么喜欢国学? PS:尽信书不如无书!
  8. AI周报丨标清变4k?B站超分辨率算法开源;强化学习算法控制核聚变登上《nature》
  9. css scale()方法
  10. 冷静分析:Opteron优势和潜在问题 (也是完全从网上copy的)