• 岚山区拨付595 万元补助农村危房改造 2019-10-11
  • 烈日下挥汗如雨 看武警丽水支队“魔鬼周” 2019-10-11
  • 党的十九大最重大的理论成就 2019-09-19
  • 外国领导人祝贺我新一届领导人 2019-09-19
  • 西安启动唐长安城明德门遗址保护工程 2019-09-16
  • 博物馆需要高水平策展人 2019-09-11
  • 凯迪拉克:在高速公路上释放双手很安全 2019-09-11
  • 苗山脱贫影像志——父母在 不远行 2019-09-04
  • 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-08-31
  • 张一山恋情遭曝光,女友竟是她… 2019-08-21
  • 人民日报评论员:在党的引领下汇聚圆梦力量 2019-08-05
  • 长治职业技术学院“学习新思想千万师生同上一堂课活动”首场授课开讲 2019-08-05
  • 清华美院“毕业拍”作品被一抢而光 2019-07-31
  • “互联网+”开启乌鲁木齐智能环保时代 2019-07-05
  • 重大疾病贫困患者报销补偿比超90% 2019-06-25
  • 马会必出生肖:LaTeX 技巧 964:高效使用 LaTeX

    最老版特码诗 www.kdltu.tw 在不久前,我在微信公众号上看到一篇关于 使用 Vim 和 LaTeX 做笔记的文章 :

    在这篇文章中,作者介绍了使用 Vim 作为 LaTeX 的编辑器,并配合 Snippets 来实现高效输入 LaTeX 代码的方式。但 Vim 作为一个无法使用鼠标,完全靠键盘来进行输入的编辑器,学习路线非常陡峭,很多人都是听过 Vim 的大名但从来不能够对它的使用融会贯通。

    但对于一般人而言,你不需要通过学习 Vim 来达到高效编辑 LaTeX 的方式。而是通过一些比较容易实现的方式,使得你能够在原来的基础上更加高效得使用 LaTeX,并达到以思考的速度输入 LaTeX 的方式。

    在第一部分,我会首先介绍高效编辑 LaTeX 文档的几种方式,这能够让你在短时间内迅速提高你的 LaTeX 输入速度。

    而第二部分,则是将输入 LaTeX 中遇到的常见问题进行一个总结,例如输入数学字母、自定义定理类环境、参考文献的设置等等。尽管网络上已经有各种各样的教程教你如何使用这些特殊的环境,但搜索时依然能搜索到很多没有用的方案。这是因为你用的 TeX 版本可能跟作者不同,或者是作者所说的方案已经过时但网站没有及时更新等等。我在这里给出我对这些基本环境的一个使用,并会经常进行更新。

    我用的 TeX 编译器主要是 TeXPadTeX,这是一款支持实时编译的 TeX 编译器,而不需要手动进行编译。而在 TeXPadTeX 无法处理的文档时,我会选择使用 TeX Live。TeXPadTeX 基本兼容 TeX Live,在使用上没有太大的区别。而对于 CTeX,我由于没有安装 CTeX,所以无法测试。


    目录

    1. 高效编辑 LaTeX 文档的几种方式

    2. 数学字母

    3. 自定义定理类环境

    4. 插入图片

    5. 参考文献


    1 高效编辑 LaTeX 文档的几种方式

    1.1 实时预览

    用 LaTeX 写文档很好,但它也有一个很明显的缺点,那就是用 LaTeX 写出来的文档,并不是所见即所得。不论是正文还是数学公式或者是参考文献,都需要将其写入 TeX 文件,并进行编译以后才能生成 PDF。而在预览 PDF 文件时,如果你发现有些地方存在书写错误,你就需要更改相应的 TeX 文件,并再次进行编译才能够生成新的 PDF 进行预览。

    非所见即所得的 LaTeX 造成了很多困扰,这表示你必须编译以后才能看到内容上的错误,而修改内容又需要重新编译,这是一个重复性操作。另一方面,你只有在编译时,才能够发现 TeX 代码中的错误,这在后期调试时十分不方便。

    尽管现在已经有越来越多的编辑器支持「实时预览」,也就是所见即所得。但不论是在功能上,还是体验上,都比不上 TeXPad 这款软件。TeXPad 的一个特色就是左侧编辑右侧预览,几乎无任何延时,并且在报错上也是十分灵敏,方便你在编写的过程中找到错误。

    实时预览与实时报错演示
    实时预览与实时报错演示

    TeXPad 对新手十分友好,通过实时预览和实时报错,能够在入门 LaTeX 时节省很多的时间在调整细节和纠错上。有许多 LaTeX 老手并不喜欢这样的模式,认为再复杂的式子他也可以快速输入。我曾一度也如此认为,直至有一次要输入以下公式:

    输入复杂的公式
    输入复杂的公式

    这个公式的复杂,让我深切体会到 TeXPad 实时编译实时预览的好处。向量需要加粗,括号需要变大,上标需要加上小括号等等。如果没有实时预览,只要有一处没有考虑到就需要重新修改重新编译重新预览,反复如此。而有了实时预览之后,就可以一次性将这个公式打出来。

    1.2 文本扩展

    在 LaTeX 中插入一张图片或者一个表格并不容易。对于插入图片而言,要定义 figure 环境,设置图片位置、图片的文件名,图片标题等等。对于插入表格而言,需要定义 table 环境,设置表头、对齐方式、表格具体内容等等。插入图片和表格的代码相对比较复杂,不容易记忆。

    好在插入图片或者插入表格都有固定的规律可循。比如,插入图片时,我们通常使用类似这样的代码:

    \begin{figure}[ht]
       \centering
       \includegraphics[width=0.8\textwidth]{x2}
       \\[0mm]
       \caption{$y=x^2$}
       \label{fig:x2}
    \end{figure}

    这样,对于每一张图片,只需这三个大括号中依次填入: 图片名称、图片标题、标签即可。通过 Keyboard Maestro 或 Text Expander 等等软件能够十分方便得通过这三条信息来生成一段插入图片的 LaTeX 代码。例如我设置通过输入 ffig 来插入一张图片,此时会弹出一个对话框,这个对话框就要求我输入这三条信息,输入完成后点击 OK,即可在当前应用程序中生成一段插入指定图片的 LaTeX 代码。

    快速插入一张图片
    快速插入一张图片

    这样的场景在 LaTeX 中十分常见,例如 align 环境、itemize 环境、array 环境、section 环境等等都可以通过这样的方式来自动插入 LaTeX 代码。

    使用文本扩展不仅仅意味着你可以少输入很多字母,它更深刻的用处是在你不需要去记忆任何环境的代码规则。在一台新的电脑上,我无法在不查找资料的情况下在 LaTeX 中插入一张图片,但在我自己的电脑上,我很轻松的通过 Keyboard Maestro 来插入一张图片。

    1.3 设置缩写

    在 LaTeX 中,可以给常用的命令设置缩写。例如在公式中需要对向量 x 进行加粗,但每次都采用 \bm{x} 来进行加粗会比较麻烦。这时我们可以通过 \def 来指定缩写,例如 \def\bx{\bm{x}},此时 \bx\bm{x} 完全等价。

    设置缩写
    设置缩写

    通过设置缩写,可以将 LaTeX 中较长的代码直接通过一个小命令来使用,这在编写 TeX 文档时可以节省不少时间。

    1.4 文本扩展与缩写的比较

    文本扩展是通过设置短语,来实现快速输入,在内容上与原来完全一致。而缩写则是通过在导言区定义新的命令,在正文中可以通过这个命令来达到指定的功能。他们的优缺点分别有:

    • 文本扩展的优点

    • 可以设置模板 (例如插入图片、表格等等)

    • 简化了打字方式,但在内容呈现上与原来一样

    • 文本扩展与当前软件无关,无论是在不同的文件中,甚至在不同的软件中,文本扩展永远可以使用

    • 缩写的优点

    • 复杂公式中,更加容易看清公式的结构

    • 文本扩展的缺点

    • 所有内容都是按照原样来写,这样复杂的公式的代码会超级长

    • 缩写的缺点

    • 在每一个文件中,都需要设置缩写才可以使用

    • 不同的人对于缩写的设置习惯不同,不利于协作

    以上就是文本扩展和缩写的比较,在实际使用中,我们需要结合起来使用。

    1.5 使用 MathPix 识别公式

    Mathpix Snip 是一个能够将图片中的公式转成 LaTeX 代码的工具,它能够通过截取你想要识别的公式,并输出 LaTeX 代码。

    图片转 LaTeX 的工具很多,但大部分软件做得不是太好,识别准确率也不高。很多软件虽然可以识别,但后期的修正 bug 会浪费很多的时间。而 MathPix 在识别准确率上做得很好,可以让你在截图以后直接可以放心使用识别出来的 LaTeX 代码,这非??焖俨⑶医谑∈奔?。

    通过 MathPix 截图并转换成 LaTeX 代码
    通过 MathPix 截图并转换成 LaTeX 代码

    下面是转换完成的 LaTeX 代码,整体来说还是转换的很不错的。

    $$
    \frac{\partial}{\partial \theta} \int \psi_{\theta}(x) d \nu=\int \frac{\partial}{\partial \theta} \psi_{\theta}(x) d \nu
    $$

    总结

    工欲善其事,必先利其器。在学习上我们不应该偷懒,但在写 LaTeX 代码上,我们应该用最高效地方式来进行编写,以达到节省时间节省精力的目的。通过一款支持实时预览的编辑器,使用文本扩展和缩写相结合,再配合 MathPix 之类的图片转 LaTeX 工具,这将让你编写 LaTeX 代码足够地高效。


    2 数学字母

    在数学公式中,你可能需要为公式中的字母设置字体,例如向量或矩阵的加粗、线性变换的花体、数集的字体等等。

    几种常用字体
    几种常用字体

    2.1 清除公式中的字母格式

    在数学公式中,直接输入的字母都会变为斜体。例如输入 sin(x) 会得到一个全是斜体的 sin(x),通过 \sin(x) 进行输入则其中的 sin 为正体。

    左: sin(x),右: \sin(x)
    左: sin(x),右: \sin(x)

    但公式中,并不是所有的数学符号都在 LaTeX 中有对应的命令。例如矩阵的迹: tr 或者 trace,在 LaTeX 中并没有特定的命令来输入。这时,可以通过 \mathrm{} 来进行输入。

    左: tr(A),右: \mathrm{tr}(A)
    左: tr(A),右: \mathrm{tr}(A)

    通过 \mbox{} 来进行输入时,也可以达到一样的效果,但这两种方法在字体和字母间距上有细微差别。

    2.2 字母加粗

    对于公式中的向量或者矩阵,常常需要对字母进行加粗。对字母进行加粗有两种情况,一种是字母为正体并加粗,一种是字母为斜体并加粗。这两种分别可以通过 \mathbf{}\bm{} 来实现。其中 bm 需要引入一个包: bm。

    \bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})
    \bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})

    2.3 使用花体字母

    在有些情况下,你可以需要使用到花体字母,例如描述线性空间的线性变换等等?;ㄌ遄帜赋S玫挠辛街?,\mathcal{}\mathscr{} ,其中 mathscr 需要引入包: mathrsfs。

    \mathcal{A}\in \mathrm{End}(V)
    \mathcal{A}\in \mathrm{End}(V)

    2.4 使用空心字母

    在描述数集时,常采用空心字母来表示。通过 \mathbb{} 能够输入空心字母,需要引入包: amsfonts。

    a, b, c\in\mathbb{R}
    a, b, c\in\mathbb{R}

    2.5 其他数学字母

    其他数学字母
    其他数学字母

    图片来源: Texdoc Symbols


    3 自定义定理类环境

    定理类环境是指,文档中关于定理、引理、命题、推论等等的环境。LaTeX 可以实现自定义定理类环境,包括设置排序单位、设置字体、分隔符等等。在 LaTeX 中,自定义定理类环境不需要另外的包 (网络上大多的资料都提示需要 amsmath 这个包,但我不用这个包的时候也能够正常运行),但在调整定理类环境的样式时需要使用 ntheorem 这个包。

    3.1 基本语法

    通过在导言区添加 \newtheorem{环境名}{标题}[排序单位] 即可自定义定理环境。其中:

    • 环境名: 必选参数,在你的 TeX 文件中,\begin{}\end{} 中大括号内的内容。

    • 标题: 必选参数,在你的 PDF 文件中,该环境显示出来的内容。

    • 排序单位: 可选参数,设置你的自定义环境自动标号的内容。

    未设置排序单位
    未设置排序单位
    • 定理名字: 可选参数,在 \begin{}[]\end{} 中中括号内的内容即为定理的名字,会通过小括号显示在定理中。

    设置定理名字
    设置定理名字

    3.2 排序单位

    • 取消排序: 若需要取消定理类环境的编号,你只需在定义定理类环境时,加上星号。

    取消排序
    取消排序
    • 按照 sectionsubsection 等排序: 只需在排序单位中设置即可。

    按照 section 排序
    按照 section 排序
    • theorem,lemma 等统一编号排序: 此时要将 theorem 用中括号的形式放入环境名和标题之间,不可放至末尾。

    theorem, lemma 统一编号
    theorem, lemma 统一编号

    3.3 设置字体

    • 定理类环境默认的字体为斜体,可以通过 \theorembodyfont 来设置字体,其中 \upshape 为正体,\itshape 为斜体。\theorembodyfont 必须放在 newthorem上方。

    将定理类环境中的内容设置为正体
    将定理类环境中的内容设置为正体
    • 需要注意的是,这个设置会对接下来所有定义的 newtheorem 都会产生影响。在仍然需要设置斜体时,可以通过 \theorembodyfont{\itshape} 将字体变为斜体。

    设置正体和斜体
    设置正体和斜体

    3.4 设置换行

    • 可以通过设置 \theoremstyle{break} 来使定理和正文中进行换行。\theoremstyle 必须放在 newthorem上方。

    设置换行
    设置换行
    • 这个命令会对接下来所有定义的 newtheorem 都会产生影响,可以通过 \theoremstyle{plain} 使其恢复为原来的样式。

    3.5 设置分隔符

    可以通过 \theoremseparator{} 设置定理和正文的分隔符。

    设置分隔符
    设置分隔符

    4 插入图片

    4.1 插入单张图片

    插入图片需要引入包: graphicx,通过 \includegraphics 即可插入一张图片。但一般情况下,你需要将图片放入到一个 figure 环境中。默认情况下,在一个空白页中,图片会插入到页面中间,但在一个非空白页中,图片会插入到页面顶部。若想要图片按照你指定的位置来进行插入,那就需要设定 figure 环境的参数。

    没有设置任何参数时,图片显示在顶部
    没有设置任何参数时,图片显示在顶部

    figure 环境包括 4 个参数:

    • h: here,此处

    • t: top,页顶

    • b: bottom,页底

    • p: page,独立一页

    在设置参数时,通常使用 ht。这表示 LaTeX 试图将图片放在此位置,如果不行 (此处没有足够的空白能够插入该图片) 则会将图片放在新页面的顶部 (如果页面为空时,放入页面中央)。

    在设置好图片放置的位置以后,还需要设置图片居中,使用 \centering 即可设置图片居中。

    接下来可以插入图片了,插入图片的命令是 \includegraphics{},大括号中输入图片的文件名即可,在不引起混淆的情况下,可以不输入文件的扩展名??裳∠钗柚猛计拇笮?,一般情况下,设置图片宽度占文字宽度的多少即可,例如: width=0.8\textwidth。

    之后则是设置图片与标题的距离、标题、标签等等。这就得到插入一张图片时需要的代码:

    \begin{figure}[ht]
       \centering
       \includegraphics[width=0.8\textwidth]{}
       \\[0mm]
       \caption{}
       \label{}
    \end{figure}

    4.2 插入两张图片并水平排列

    与插入一张图片的方式基本相同,只不过需要使用 minipage 包将图片进行包裹,并分别设置宽度即可。

    插入两张图片并水平排列
    插入两张图片并水平排列

    代码如下:

    \begin{figure}[ht]
       \centering
       \begin{minipage}[t]{0.48\textwidth}
           \centering
           \includegraphics[width=0.8\textwidth]{x2}
           \caption{$y=x^2$}
       \end{minipage}
       \begin{minipage}[t]{0.48\textwidth}
           \centering
           \includegraphics[width=0.8\textwidth]{x3}
           \caption{$y=x^3$}
       \end{minipage}
    \end{figure}

    4.3 设置图片存放路径

    在图片较多的情况下,将图片都存放在根目录会导致根目录文件较多。但如果将图片保存在子目录,那插入图片时会比较麻烦,每次都需要写上子目录的名称。你可以通过设置图片存放路径的方式,使得图片存放指定的目录,并在插入图片时直接使用图片名称即可。

    通过 \graphicspath{{figures/}} 可以设置图片的路径为 figures/,此时即可将图片存入该文件夹,而在代码中,可以直接通过文件名进行调用。


    5 参考文献

    在写文章的过程中,参考文献的引用是一个很重要的部分,但同时这也是一个很复杂的事情,这体现在以下几个方面

    • 参考文献对大小写,正体斜体等的要求极其严格,并且有不同的规范。

    • 正文中引用参考文献时有很多不同的格式,例如通过 [1]、[2] 等等的数字进行引用,或者通过 Erhan et al. (2010) 这样的作者年份来引用等等。

    • 在文章的参考文献页,各参考文献的排序方式有很多规范,例如通过引用顺序进行排序或者通过作者名字进行排序等等。

    在 LaTeX 中,自动生成参考文献也有诸多不同的方式。这里以 natbib 这个包来做示例,正文中显示的引用为作者加上年份,参考文献按照作者名字进行排序。对于别的参考文献样式,只需进行少许更改,即可达到指定的要求。

    5.1 基本结构

    首先你要引入包 natbib 并设置参数 authoryearround。这里的 authoryear 表示要显示的内容,而 round 表示年份用小括号进行包裹 (默认用中括号进行包裹)。

    然后你需要在 TeX 文档的末尾添加参考文献的文件,即在 \end{document} 之前加上以下两行:

    \bibliographystyle{plainnat}
    \bibliography{reference}

    这两行的顺序不能够调换,第一行表示参考文献的样式是 plainnat,而第二行表示参考文献的文件是 reference 这个文件。这时,TexPad 会自动问我们是否需要新建该文件。

    创建 reference.bib 文件
    创建 reference.bib 文件

    此时的 TeX 文件结构如下,并在目录中多出了一个 reference.bib 文件。

    基本结构
    基本结构

    5.2 bib 文件结构

    这个 bib 文件其实是一个文献数据库,你可以将你所有阅读过的文献都放到这个文件中进行管理。需要注意的是,只有你在正文中引用到的文献,才会出现在参考文献的列表中。

    bib 文件存放所有需要使用到的参考文献,对每一个文献,都有一个固定的格式,例如下述内容就代表一个文献。

    @article{erhan2010does,
     title={Why does unsupervised pre-training help deep learning?},
     author={Erhan, Dumitru and Bengio, Yoshua and Courville, Aaron and Manzagol, Pierre-Antoine and Vincent, Pascal and Bengio, Samy},
     journal={Journal of Machine Learning Research},
     volume={11},
     number={Feb},
     pages={625--660},
     year={2010}
    }

    这并不需要你手动进行输入,你可以通过任何文献管理软件如 Papers、EndNote 等等将文章引用为 BibTeX 格式,或者在 Google 学术上点击引用并选择 BibTeX。

    从 Google 学术中获取 BibTeX 格式的参考文献
    从 Google 学术中获取 BibTeX 格式的参考文献

    5.3 引用参考文献

    在正文中引用参考文献的方式非常简单,只需输入 \cite{} 即可,此时 TexPad 会自动弹出一个框用于选择需要引入的参考文献。

    引用参考文献
    引用参考文献

    从上图中你也可以看到,References 下面的参考文献列表,会随着正文中引用的参考文献的变化而变化。而关于 Reference 与正文在同一页的问题,这只需在参考文献前添加 \newpage 即可。


    选自:https://www.notion.so/LaTeX-6be09d441a594bed84d59dba2b254034

    分享到:
    未经允许不得转载:LaTeX 技巧 964:高效使用 LaTeX
    已有 条意见

      最新文章

      加载中...
        本站提供专业LaTeX排版、咨询、定制服务,请点击下图咨询详情


        全国首个精品的LaTeX视频教程,大牛带着你入门,让LaTeX学习不再纠结,请点击下图咨询详情

        热门评论

          联系我们

          交流QQ群:91940767
          本站QQ号:343083553
          邮箱联系[email protected]
          淘宝店铺https://shop240512713.taobao.com/ 提供排版,模板定制,培训,图片处理,视频教程等LaTeX服务。

          关注我们微信公众号

          如果您投稿或者希望加入我们团队,请发送您的简历到[email protected]。
        • 岚山区拨付595 万元补助农村危房改造 2019-10-11
        • 烈日下挥汗如雨 看武警丽水支队“魔鬼周” 2019-10-11
        • 党的十九大最重大的理论成就 2019-09-19
        • 外国领导人祝贺我新一届领导人 2019-09-19
        • 西安启动唐长安城明德门遗址保护工程 2019-09-16
        • 博物馆需要高水平策展人 2019-09-11
        • 凯迪拉克:在高速公路上释放双手很安全 2019-09-11
        • 苗山脱贫影像志——父母在 不远行 2019-09-04
        • 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-08-31
        • 张一山恋情遭曝光,女友竟是她… 2019-08-21
        • 人民日报评论员:在党的引领下汇聚圆梦力量 2019-08-05
        • 长治职业技术学院“学习新思想千万师生同上一堂课活动”首场授课开讲 2019-08-05
        • 清华美院“毕业拍”作品被一抢而光 2019-07-31
        • “互联网+”开启乌鲁木齐智能环保时代 2019-07-05
        • 重大疾病贫困患者报销补偿比超90% 2019-06-25
        • 龙虎的规律 彩宝贝 龙虎对刷公式 龙虎和赌博是骗局吗 时时彩大底 竞彩稳赚不赔的方法破解了 赌骰子押大小永远买大 稳赚六肖三期必出一期 麻将手机版 黑龙江福利彩票20选8