LaTeX的一些小技巧

  • A+
所属分类:LaTeX基础
摘要这一篇继续介绍在使用LaTeX的时候的一些小技巧, 一些方法, 记录在这里方便之后的查询.

简介

这里主要记录一些LaTeX的使用的小方法, 之前也是有记录使用的方法, 在LaTeX指南信息中. 但是这一篇的内容有些多了, 所以自己重新再开一篇文章来进行记录.

关于Latex中表格的相关操作, 我们更多的是写在了: LaTeX完成Scientific Papers的一些说明

 

小技巧记录

LaTeX代码高亮

关于代码高亮的相关介绍, 我之前在LaTeX指南信息中有所提及, 在这里就直接给出链接.

 

改变边缘距离

参考链接: Is there any other margin I must set to reduce margin to zero?

  1. \documentclass{article}
  2. \usepackage[margin=0pt]{geometry}

这个可以使得生成的pdf的边缘距离变为0, 效果图如下所示:

LaTeX的一些小技巧

 

我们也可以按比例进行调整, 如下所示

  1. \usepackage{geometry}
  2. \geometry{a4paper,scale=0.8}

这个表示设置了纸张为a4 纸,并且版心占页面长度的比例为80%.

参考链接: latex设置页面边距,页面大小,页边距,geometry宏包

 

使得目录每一段有缩进

参考链接: How can I get legal style indentation on section, subsection, subsubsec.. using titlesec?

就是使得每一个section可以有缩进, 我们使用下面的方式来进行实现.

  1. % %%%%%%%%%%%%%%%%%%%%%%%%%
  2. % 下面的可以使得section有缩进
  3. % %%%%%%%%%%%%%%%%%%%%%%%%%
  4. \usepackage{changepage,lipsum,titlesec}% http://ctan.org/pkg/{changepage,lipsum,titlesec}
  5. \titleformat{\section}[block]{\bfseries}{\thesection.}{1em}{}
  6. \titleformat{\subsection}[block]{}{\thesubsection}{1em}{}
  7. \titleformat{\subsubsection}[block]{}{\thesubsubsection}{1em}{}
  8. \titlespacing*{\subsection} {2em}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
  9. \titlespacing*{\subsubsection} {3em}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}

下面就是正常使用section等就会出现缩进的效果, 效果图其实就是上面那张, 我在下面再贴一下.

LaTeX的一些小技巧

 

创建问答类型的模板

有的时候, 我们会遇到问答类型的文档需要书写, 例如采访之类的. 这个时候我们可以使用下面的格式来进行书写. 我们可以使用下面的代码来创建问答模板:

  1. \usepackage{enumitem}
  2. \newenvironment{QandA}{\begin{enumerate}[label=\bfseries\alph*.]\bfseries}
  3.                       {\end{enumerate}}
  4. \newenvironment{answered}{\par\normalfont}{}
  5. \begin{QandA}
  6.    \item question one
  7.          \begin{answered}
  8.          this is my answer: XXXXX
  9.          \end{answered}
  10.     ~\newline
  11.    \item question two
  12.          \begin{answered}
  13.          YYYYYY
  14.          \end{answered}
  15. \end{QandA}

最终的结果如下所示:

LaTeX的一些小技巧

参考资料: How can I create a Question/Answer format for reports?

 

LaTeX绘制分割线

参考链接: Horizontal Line Options in LaTeX

这里介绍一下在LaTeX中绘制分割线, 分别有绘制虚线和绘制实线.

  • 虚线: dotfill
  • 实线: hrulefill

下面简单看一下使用和最终的效果:

  1. \subfile{sections/1.tex}
  2. \dotfill % 虚线
  3. \hrulefill % 实线
LaTeX的一些小技巧

 

去除每一个段落前的空格

有的时候, 我们不需要段落前的空格, 于是我们可以在段落前面加上下面的内容.

  1. % 这是正常的段落, 段首有空格
  2. This is 1 and is indented.  Blah blah blah.
  3. % 这样写段首就没有空格了
  4. \noindent
  5. This is 2 but is not indented since it was started with noindent.  Blah blah blah.

参考文献Remove Indentation for a Single Paragraph

 

但是, 有的时候文章很长, 每一段加很麻烦. 同时, 我们需要修改段间距来使得段与段之间看起来明显一些, 这个时候我们就可以使用下面的这个包. 可以去掉每一段段首的空白和修改段与段之间的间距.

  1. \usepackage{parskip} % 去除每一段首的空格

参考文献: Is there an easy way to have my whole document with a space between paragraphs rather than indentation?

 

LaTeX插入pdf

我们可以在LaTeX中进行pdf的插入. 使用下面的package就可以进行插入pdf.

  1. \usepackage{pdfpages} % 插入pdf文件

下面是最基本的插入pdf的用法. 其中pages表示插入的pdf的页面, 如这里表示插入pdf的第1和第2页.

  1. \includepdf[pages={1,2}]{./doc/sample.pdf}

我们还可以对插入的pdf进行缩放. 我们使用如下的方式进行缩放. scale后面是缩放的比例.

  1. \includepdf[pages=2, scale=0.95]{./doc/sample.pdf}

最后, 对于插入的pdf, 默认情况下他是会新起一个page的, 我们可以直接通过pagecommand的方式来插入表题等内容.

  1. \includepdf[scale=0.8,pages=1,pagecommand=\section{blub}]{sample.pdf}

参考资料How to include PDF pages without a newpage before the first page?

 

我们也可以将pdf按照图片的样子进行插入, 比如下面的例子.

  1. \begin{figure*}[htb]
  2.     \centering
  3.     \includegraphics[width=7.16in]{sample.pdf}
  4.     \caption{sample}
  5.     \label{fig4-Proposed-1}
  6. \end{figure*}

 

Latex插入换行

在正常情况下, 我们可以通过在一句话的末尾插入下面两种形式来完成换行.

  1. - \\
  2. - \newline

但是, 我们不能直接在前面没有内容的时候使用上面的换行的方式, 否则会出现如下的报错:

  1. Error message: There's no line here to end

我们可以使用下面的方式来解决这个报错, 即在命令前插入~, 来表示插入空白的区域 (Some people use a quick fix and insert some empty space like in ~\ to repair that):

  1. ~\newline
  2. ~\newline
  3. ~\newline

参考资料: Error message: There's no line here to end

 

latex文章插入行号

我们使用lineno来完成文章行号的插入。

  1. \usepackage{lineno}
  2. \linenumbers

下面是几个常用的选项

Options

Some of the options the package provides include:

  • [left]: Line numbers in left margin (default)
  • [right]: Line numbers in right margin
  • [switch]: Line number in outer margin (left for even, right for odd pages)
  • [switch*]: Line numbers in inner margin
  • [pagewise]: Restart numbering on every page
  • [running]: Continuously number lines (default)
  • [modulo]: Pyourint only multiples of five
  • [displaymath, mathlines]: Line numbers for math environments (both needed)

其中, switch和pagewise是两个比较常用的选项。其中switch可以在双栏的情况下,让左侧的行号靠左, 右侧的行号靠右(就是都靠外侧). pagewise是可以使得每一页进行重新标注, 每一页的行号都重新开始.

  1. \usepackage[switch, pagewise]{lineno}
  2. \linenumbers

关于一些其他的用法, 例如只对某一段表行号, 表行号的时候将公式计算进去等问题, 可以参考下面的官方网址.

官方网址: lineno文档

 

Logo的插入

这一部分我们在介绍模板, Latex模版--ElegantLaTeX, 的时候介绍过了. 但是我觉得放在这里更加合适. 所以我在这里放一下相同的介绍.

我们想要在这里实现在文章标题前插入一个图片, 实现类似水印(logo)的作用, 一会直接看效果吧.

  1. \title{XXXXXXXX}
  2. \author{{Wang}}
  3. \institute{{Management of Information System Projects}}
  4. \begin{document}
  5. % \maketitle
  6. \vbox{
  7.     \raggedright
  8.     \includegraphics[width=45mm]{./figure/UiA.png} % 在标题前面插入一个logo
  9.     \maketitle %this typesets the contents of \title, \author and \date
  10. }
  11. \section{A}
  12. \end{document}

最终的实现效果如下图所示, 我们可以通过修改上面图片的width来修改图片的大小.

LaTeX的一些小技巧

参考资料Add a picture before book title

 

关于引用的格式

同样, 这一部分我们在介绍模板, Latex模版--ElegantLaTeX, 的时候介绍过了. 但是我觉得放在这里更加合适. 所以我在这里放一下相同的介绍.

我们使用下面的方式来完成引用的实现.

  1. \usepackage{csquotes}
  2. \renewcommand{\mkbegdispquote}[2]{\itshape}
  3. % 加双引号的引用
  4. \blockquote{
  5.     Technology assists with the uncertainty done by nature with new developments. Law defends the uncertainty of behavior by the people with rules that are set. Religion accepts the uncertainty people cannot get protected from. Individuals use their beliefs to get through their uncertainties” (Wikipedia).
  6. }
  7. % 这是斜体
  8. \begin{displayquote}
  9.     Technology assists with the uncertainty done by nature with new developments. Law defends the uncertainty of behavior by the people with rules that are set. Religion accepts the uncertainty people cannot get protected from. Individuals use their beliefs to get through their uncertainties” (Wikipedia).
  10. \end{displayquote}

最终的实现效果如下图所示:

LaTeX的一些小技巧

参考文献: change quote-command to display text in italics

 

引用时引用标题

有的时候, 我们进行section引用的时候, 希望引用section的标题, 而不是section的号码, 这个时候我们就需要使用\nameref来进行引用. 我们下面看一个简单的例子.

  1. \section{Me, myself and I}
  2. \label{intro}
  3. Hi, my name is Bart.
  4. \section{Summary}
  5. I introduced myself in section: \nameref{intro}.

最终的结果如下所示:

LaTeX的一些小技巧

参考文献: \ref Chapter Name in LaTeX

 

关于增加表格和图片的目录

有的时候, 我们需要在文章前面增加表格和图片的目录.

  1. \listoffigures
  2. \clearpage
  3. \listoftables
  4. \clearpage

最后的结果如下所示:

LaTeX的一些小技巧

 

作者信息,机构邮箱信息

我们有的时候需要作者信息像下面这个样子.

LaTeX的一些小技巧

首先是一个作者可以对应多个机构 (这个参考Adding more than one author with different affiliation)

  1. \usepackage{authblk}
  2. \author[1]{Author A\thanks{A.A@university.edu}}
  3. \author[1]{Author B\thanks{B.B@university.edu}}
  4. \author[1]{Author C\thanks{C.C@university.edu}}
  5. \author[1,2]{Author D\thanks{D.D@university.edu}}
  6. \author[2]{Author E\thanks{E.E@university.edu}}
  7. \affil[1]{Department of Computer Science, \LaTeX\ University}
  8. \affil[2]{Department of Mechanical Engineering, \LaTeX\ University}
  9. \renewcommand\Authands{ and }

除了上面的信息之外, 我们还需要添加邮件的信息, 这一部分参考Custom positions of author names, affiliations and emails in LaTeX article

下面的写法可以使得邮件是两行的.

  1. \affil[ ]{\textit{e-mail: wangmaonan@bupt.edu.cn, zkf\_bupt@163.com, luodan@bupt.edu.cn,}}
  2. \affil[ ]{\textit{qing0991@163.com, xjwang@bjut.edu.cn}}

 

 

同时显示作者名和邮箱

有的时候, 我们不仅需要写作者名, 还需要写作者的邮箱. 这个时候, 我们就有下面的几种方式来增加邮箱内容.

首先是最简单的, 我们直接将邮箱放在名字的后面, 就像下面这样. 注意我们每一个名字和邮箱后面都是有换行的.

  1. \author{AAA, \texttt{AAA@gmail.com}, \\
  2.         BBB, \texttt{BBB@hotmail.no}, \\
  3.         CCC, \texttt{CCC@online.no}, \\
  4.         DDD, \texttt{DDD@gmail.com},
  5.         }

最后显示的结果如下所示.

LaTeX的一些小技巧

对于上面的内容, 我们可以稍微做一下改进, 可以给邮箱加上链接, 我们使用下面的方式进行操作:

  1. \usepackage{hyperref} % 这个是邮件的链接
  2. \author{AAA, email \href{AAA@hotmail.no}{AAA@hotmail.no} , \\
  3.         BBB, email \href{BBB@hotmail.no}{BBB@hotmail.no}, \\
  4.         CCC, email \href{CCC@online.no}{CCC@online.no}, \\
  5.         DDD, email \href{DDD@gmail.com}{DDD@gmail.com},
  6.         }
LaTeX的一些小技巧

上面就是给邮箱加上链接之后的样子. 之后, 我们再更近一步, 我们希望邮箱出现在名字的下面, 于是, 我们可以进行下面的操作:

  1. \author{AAA, \\ email \href{AAA@hotmail.no}{AAA@hotmail.no} ,
  2.         \and BBB, \\ email \href{BBB@hotmail.no}{BBB@hotmail.no},
  3.         \and CCC, \\ email \href{CCC@online.no}{CCC@online.no},
  4.         \and DDD, \\ email \href{DDD@gmail.com}{DDD@gmail.com},
  5.         \and EEE, \\ email \href{EEE@gmail.com}{EEE@gmail.com}, \\
  6.         }
LaTeX的一些小技巧

参考链接Adding an email to LaTeX file

关于上面引用的时候, 可能会对institute造成影响, 会导致institute无法居中, 这个时候我们就需要手动调整institute的位置了. 我们使用hspace来进行位置的调整, 下面简单给出示例代码.

  1. \institute{
  2.     \hspace*{-6cm}
  3.     Management of IS Projects - IS 407
  4. }

其中:

  • \hspace用于水平间距(horizon)
  • \vspace用于垂直间距(vertical)

 

 

引用链接

有的时候, 我们引用的内容不是论文, 而是一些在线的内容, 这个时候我们可以使用下面的格式进行引用. 只需要在bib文件中按下面格式进行书写即可.

  1. @misc{workprocessNatter,
  2.   author = {Elisabeth Natter},
  3.   title = {{Effects of Globalization on Human Resources Management}},
  4.   howpublished = "\url{https://smallbusiness.chron.com/effects-globalization-human-resources-management-61611.html}",
  5.   year = {2018},
  6.   note = "[Online; accessed 14-November-2018]"
  7. }

参考文献How to add a URL to a LaTeX bibtex file?

 

参考文献加上页码

有的时候, 我们在引用参考文献的时候, 需要加上页码. 我们可以使用\citep[p.~66]{参考文献}来进行引用.

  1. Project managers must allow time for the team to develop the common work practices using special tools that can facilitate this process \citep[p.~66]{schwalbe2008information}

最后的效果如下图所示.

LaTeX的一些小技巧

我们也可以引用一段范围内的页码, 如下所示:

  1. Project managers must allow time for the team to develop the common work practices using special tools that can facilitate this process \citep[p.~66--80]{schwalbe2008information}.

最终的效果如下图所示:

LaTeX的一些小技巧

参考文献: Referencing page number with only one reference

 

脚注及相关操作

我们在这里对latex添加脚注进行相应的说明. 会分为三个部分:

  • 最基础的脚注添加
  • 脚注添加url
  • 引用相同的内容

下面我们就从第一个开始说起. 对于最基础的脚注的添加. 这里加了label是为了后面引用的时候可以进行使用.

  1. This is a test of footnote\footnote{\label{note1}basic footnote test}.

最终的效果如下图所示:

LaTeX的一些小技巧

 

接下来, 我们来看一下我们希望引用链接时候的情况.

  1. \usepackage{url}
  2. This is a test of footnote\footnote{\label{note1}\url{https://en.wikipedia.org/wiki/Uncertainty_avoidance}}.

最终的结果如下所示:

LaTeX的一些小技巧

参考文献: latex, how to put superscript and link to URL downpage

 

我们再看最后的一种情况, 我们有一个相同的内容(例如链接), 要在文章的不同位置进行脚注. 如果直接按照上面的方式进行书写, 会出现两个相同的脚注. 所以我们需要使用下面的方式.

  1. \usepackage{url}
  2. % 引用脚注使用(在usepackage处进行使用)
  3. \makeatletter
  4. \newcommand\footnoteref[1]{\protected@xdef\@thefnmark{\ref{#1}}\@footnotemark}
  5. \makeatother
  6. This is a test of footnote\footnote{\label{note11}\url{https://en.wikipedia.org/wiki/Uncertainty_avoidance}}.
  7. This is another footnote\footnote{\label{note22}another one}.
  8. We have areference to first footnote\footnoteref{note11}.
  9. We have areference to second footnote\footnoteref{note22}.

最终的结果显示如下所示:

LaTeX的一些小技巧

参考文献: Reference different places to the same footnote

 

公式编号的设定

有的时候, 我们不希望公式的编号从1开始, 或者说我们希望指定某个公式的编号, 我们就可以使用tag来进行指定公式的编号. 我们来看下面的一个例子来进行简单的说明, 看下面第二个式子中tag的使用:

  1. \begin{equation}
  2.     1 + 1 = 2
  3. \end{equation}
  4. \begin{equation} \tag{5}
  5.     1 + 1 = 2
  6. \end{equation}
  7. \begin{equation}
  8.     1 + 1 = 2
  9. \end{equation}

最终的显示结果如下所示, 可以看到第一个式子编号是1, 第二个编号是我们指定的, 是5, 接着最后的一个式子的编号是2:

LaTeX的一些小技巧

参考文献: Change equation number latex

 

长单词的自动换行

我们可以使用seqsplit来完成长单词的自动换行.

  1. \usepackage{seqsplit}

我们也是可以进行一些自定义, 例如在换行处使用短横线.

  1. \usepackage{seqsplit}
  2. \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi}

在使用的时候, 我们只需要把单词使用seqsplit包住即可. 注意这里是不可以放词组的, 只能放单词.

  1. \seqsplit{commemoration}

 

LaTeX指定字体(IPA的正确显示)

最近想在LaTeX中输入音标, 但是发现如果直接编译会出现编译错误, 需要指定字体. 我在这里简单演示一下如何指定字体, 可以正确显示一些特殊字符.

首先我们使用fontspec, 并指定字体.

  1. \usepackage{fontspec}
  2. \newfontfamily\myfont{times.ttf}

在使用的时候, 我们在myfont中输入想要的内容, 这里的就是使用上面定义的字体进行显示. 就可以显示一些特殊字符.

  1. {\myfont{XXXXXXX}}

 

一些说明

LaTeX设置支持中文

  1. \usepackage[UTF8]{ctex}

参考链接: 有没有简单的 LaTeX 中文支持方案?

LaTeX中的宽度

参考链接: LaTeX 中的宽度

下面做一下简单的介绍, 内容来自上面的参考链接中.

  • \linewidth - 当前行的宽度
  • \columnwidth - 当前分栏的宽度
  • \textwidth - 整个页面版芯的宽度
  • \paperwidth - 整个页面纸张的宽度
  • \hsize - Plain TeX 的宏,是 TeX 在行末考虑分词换行时使用的宽度

这些宽度里,\hsize 是 Plain TeX 的宏,不推荐 LaTeX 用户使用,简单地当它不存在就好了。
在单栏文本中,\columnwidth 和 \textwidth 保持一致;在多栏文本中 \textwidth = n \columnwidth + (n - 1) \columnsep(其中 n 是分栏数)。

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: