LaTeX教学2.7 自定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LaTeX教学2.7 自定义相关的知识,希望对你有一定的参考价值。

参考技术A

在LaTeX中, 很多命令和环境无法满足我们的需要, 于是我们需要自己设计一些简单的命令和环境, 来方便我们文章的写作, 自定义的命令和环境会更好的服务我们自身.

先给出自定义命令的命令: \\newcommand<新命令>[<参数数量>][<默认值>]<定义内容> .

它允许作者定义一条新命令, 该命令的各种必要参数和可选参数说明如下, 其中 新命令 两端的花括号可以省略, 但是不建议省略.

新命令是一个声明形式的命令, 通常放在导言中, 这样全文都可以使用该命令, 如果放在正文中, 那么只有该命令声明后的内容才能使用该命令, 或者所在环境和组合之内, 即 在环境中定义的命令无法在环境之外使用, 在花括号内定义的命令同样无法在花括号使用 , 如 \\newcommand\\cmdAa \\cmdA \\cmdA 中, 花括号内的 \\cmdA 会正常输出a, 而花括号外的 \\cmdA 会报错. 而且自定义命令的各种参数中不得含有抄录命令 \\verb 或抄录环境 verbatim .

自定义一条命令, 使其可以生成你自己的姓名.

但是好像又有了点新的问题, 像我们在命令一节里讲的一样, Zhonghao Sun 后面的空格又不见了, 原因应该很明显了, 自定义命令后的空格被当成了命令结束的标志从而使得 Sun 和 is 中间的空格丢失, 那我们在自定义命令中主动添加一个空格不就可以了吗?也不行的, 因为那样做的话在第二句中的 \' 前又会多出一个空格, 怎么解决呢, xspace 宏包解决了这个问题, 调用宏包 \\usepackagexspace , 并将上述定义内容改为
Zhonghao Sun\\xspace
即可, 命令 \\xspace 可以自动生成一个空格, 除非其后是标点. 再试一下, 这个自定义命令就算完成了.

在上例中, 新命令 \\myname 定义为自己的姓名, 每当使用这个命令就可以生成一个名字, 对于论文排版中要大量出现的文字, 可以将它简化为一个自定义命令, 提高输入效率也防止出错.

自定义一条带参数的命令, 用于将部分文本转为对应中文字体.

上述自定义命令中, 定义了一个必要参数:字体, 用来选择需要的字体. 下面给出一个可选参数与一个必要参数的例子:

使用可选参数可以简化命令使其更灵活, 但是可选参数也更容易被忘记.这里我们只选取了改变字体命令来进行举例, 对于其他的命令也可以自行进行尝试.

带星号的自定义命令:如果把自定义命令改为 \\newcommand* , 其不同之处就是命令中的各种参数不能超过一行, 即命令中不能含有换行符或 \\par , 否则会出错.

系统仍然提供了一种防止同名冲突的命令: \\providecommand<新命令>[<参数数量>][<默认值>]<定义内容> , 如此定义出来的新命令会检查被调用的宏包提供了同名命令, 所定义的内容将会被保存下来, 直到提供重名命令的宏包被取消, 该定义的命令才会被调用. 另外, 如果想自定义有可选子参数的命令, 可以调用 keycommand 宏包, 并使用命令 \\newkeycommand , 具体使用方法可以查看宏包文档.

如果我们对系统内部的某个命令或已定义的命令的排版效果不满意, 我们可以对其进行修改:

这个命令只能用于已有命令的修改, 而且对已有命令不要轻易将其重新定义, 因为原定义中可能隐藏着你需要而没注意过的内容, 如果确实需要重新定义, 应该先查明已有命令的定义, 再进行修改. 同样, 修改命令也有对应的星号形式 \\renewcommand*

如果没有找到自己满足的环境, 那么我们也可以自定义一个环境, 如自定义命令一样, 自定义环境的命令如下

然后就可以使用这个新环境了:

新环境定义命令中的各种参数的用途如下

自定义一个定理环境:

定义中的 \\quad 是一种长度设置命令, 我们在数学式一章中会更详细的介绍它. 开始定义中与结束定义中的的 \\par 都是要新起一段. 的如果我们需要在某些定理的后面添加定理的名称, 可以使用带可选参数的自定义环境, 看下例

我们看已完成的论文中的定理, 定义都是带着序号的, 而如何让这个序号也加在定理后面呢, 在下一节 计数器 中我们会介绍.

与修改已有命令一样, 命令为:

同样修改已有环境和定义新命令也有带号的形式 \\renewenvironment* 和 \\newenvironment* , 这些都与修改已有命令的使用方法相同.

在使用自定义命令或环境时, 可能会产生并不需要的空格, 如果希望消除空格的话, 可以在定义内容或新环境的定义中分别使用以下命令:

自定义两个引用环境, 其中第二个使用忽略空格命令, 对比两者的排版效果.

在后面也会有自定义的情况, 比如自定义计数器等, 在后面对应的章节我们会一一介绍.

LaTeX自定义宏包类文件的默认搜索路径设置方法

??对于自定义的LaTeX宏包与类,在调用时可以通过在命令documentclass{}与usepackage{}命令中指定完整路径或者相对路径,这样确实可以调用,但是编译时总是有烦人的警告信息,让人不爽。还好有一个办法可以解决。
?
操作系统:Ubuntu 16.04 64位桌面版
LaTeX工具:TeXstudio 2.10.8
?

1、打开终端,输入以下命令

kpsewhich -var-value=TEXMFHOME

??这个命令会查询到默认的宏包与类搜索路径,我的电脑上显示结果为:home/luwei/texmf。
?

2、创建目录

??上面显示的目录,不一定会存在,如果没有的话就自己创建一个,然后再继续创建三个目录,最后的目录结构是:~/texmf/tex/latex/commonstuff。
?

3、放入宏包与类文件

??把自己定义的宏包或类文件放入上面创建的目录中即可,放文件的链接也可以。示意如下:
技术分享图片
?
??做完上述工作后,再打开TeXstudio编译文件就没有警告信息了。此外,要注意的是在宏包与类的ProvidesClass{}命令中,不用加路径,直接声明想起的名字,在调用时也是如此,就与调用系统提供的宏包一样。










以上是关于LaTeX教学2.7 自定义的主要内容,如果未能解决你的问题,请参考以下文章

Latex 自定义参考文献格式 bst文件

LaTeX自定义宏包类文件的默认搜索路径设置方法

LaTeX自定义宏包与类文件默认搜索路径的设置方法

scratch中自定义模块的数字或文本有啥用

Latex 自定义章节 修改标题 参考文献格式

在单个 LaTeX 表格的单元格中添加自定义左侧间距