跳转到内容

LaTeX/技巧和窍门

来自维基教科书,开放世界中的开放书籍

LaTeX

入门
  1. 简介
  2. 安装
  3. 安装额外包
  4. 基础
  5. 如何获取帮助

常用元素

  1. 文档结构
  2. 文本格式
  3. 段落格式
  4. 颜色
  5. 字体
  6. 列表结构
  7. 特殊字符
  8. 国际化
  9. 旋转
  10. 表格
  11. 标题创建
  12. 页面布局
  13. 自定义页眉和页脚‎
  14. 导入图形
  15. 浮动、图形和标题
  16. 脚注和边注
  17. 超链接
  18. 标签和交叉引用
  19. 首字母

机制

  1. 错误和警告
  2. 长度
  3. 计数器
  4. 规则和撑杆

技术文本

  1. 数学
  2. 高级数学
  3. 定理
  4. 化学图形
  5. 算法
  6. 源代码列表
  7. 语言学

特殊页面

  1. 索引
  2. 词汇表
  3. 参考文献管理
  4. 更多参考文献

特殊文档

  1. 科学报告(学士报告、硕士论文、博士论文)
  2. 信件
  3. 演示文稿
  4. 教师专区
  5. 简历
  6. 学术期刊(MLA、APA 等)

创建图形

  1. 介绍程序化图形
  2. MetaPost
  3. 图片
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 创建 3D 图形

编程

  1. 纯 TeX
  2. 创建包
  3. 创建包文档
  4. 主题

其他

  1. 模块化文档
  2. 协同编写 LaTeX 文档
  3. 导出到其他格式

帮助和建议

  1. 常见问题解答
  2. 技巧和窍门

附录

  1. 作者
  2. 链接
  3. 包参考
  4. LaTeX 文档示例
  5. 索引
  6. 命令词汇表

编辑此框编辑目录

始终以罗马字体书写 LaTeX

[编辑 | 编辑源代码]

如果您在非默认字体区域插入\LaTeX命令,它将根据相应的格式进行排版。如果您想保留 LaTeX 以计算机现代罗马字体的形式书写,则必须重新定义该函数。但是,简单的

\renewcommand{\LaTeX}{{\rm \LaTeX}}

将输出

TeX capacity exceeded , sorry [ grouping levels =255].

因此您需要创建一个临时变量。

遗憾的是,

\newcommand{\LaTeXtemp}{\LaTeX}
\renewcommand{\LaTeX}{{\rm \LaTeXtemp}}

也不起作用。

我们必须使用 TeX 原语\let代替。

\let\LaTeXtemp\LaTeX
\renewcommand{\LaTeX}{{\rm \LaTeXtemp }}

id estexempli gratia(即 和 例如)

[编辑 | 编辑源代码]

如果您简单地使用 "i.e." 或 "e.g." 形式,LaTeX 将把句点视为句子结束句点(即 句号),因为它们后跟一个空格,并在下一个 "句子" 之前添加更多空格。为了防止 LaTeX 在最后一个句点后添加空格,正确的语法是 "i.e.\ " 或 "e.g.\ ",或者 "i.e., " 和 "e.g., ",后面跟着一个逗号。逗号被 LaTeX 解释为句子的一部分,因为句点后面没有空格。在这种情况下,"i.e.," 和 "e.g.," 不需要任何特殊关注。例如,芝加哥格式手册 偏爱后者。

如果命令 \frenchspacing 在序言中使用,则句子之间的空格始终与单词之间的空格相同。

按章节分组图/公式编号

[编辑 | 编辑源代码]

对于长文档,编号会变得很繁琐,因为数字会达到两位数和三位数。要使计数器在每个章节开头重置,并将数字加上前缀章节号,请在序言中包含以下内容。

\usepackage{amsmath}
\numberwithin{equation}{section}
\numberwithin{figure}{section}

类似的计数器类型和文档单位(如 "小节")也可以这样做。


图形和图表编辑器

[编辑 | 编辑源代码]

支持 LaTeX 的矢量图形编辑器

[编辑 | 编辑源代码]

在图像中使用与文档相同的字体和字号通常是比较好的选择。此外,对于科学图像,您可能需要数学公式或特殊字符(如希腊字母)。如果图像编辑器允许您在图像中使用 LaTeX 代码,那么这两件事都可以轻松实现。大多数矢量图形编辑器都没有提供此选项。但是,也有一些例外。

在早期,LaTeX 用户使用 Xfig 来绘制图形。如今,该编辑器仍被不少人使用,因为它具有特殊的 "导出到 LaTeX" 功能。它还提供了一些非常基本的方法将 LaTeX 文本和数学封装到图像中(将文本的 "特殊标志" 设置为 "特殊" 而不是 "正常")。导出时,所有 LaTeX 文本都将放在一个 .tex 文件中,与图像的其余部分分开(图像将放在一个 .ps 文件中)。

专门为 LaTeX 使用量身定制的,更新且更易于使用的矢量图形编辑器是 IPE。它允许使用任何 LaTeX 命令,包括但不限于图像中的数学公式。该程序将其文件保存为可编辑的 .eps 或 .pdf 文件,无需在每次编辑后导出图像。

一款功能非常强大的矢量图形编辑器是 Inkscape。它本身不支持 LaTeX 文本,但您可以使用插件 Textext 来实现。这使您可以在图像中放置任何 LaTeX 代码块。此外,从版本 0.48 开始,您可以导出到矢量图形,文本在 .tex 文件中单独存放。使用这种方法,文本将由 LaTeX 编译器本身进行渲染。

LaTeXDraw 是一款免费的开源图形 PSTricks 生成器和编辑器。它允许您绘制基本的几何对象,并将结果保存为多种格式,包括 .jpg、.png、.eps、.bmp 以及 .tex。在最后一种情况下,保存的文件只包含 PSTricks/LaTeX 代码。因此,您可以在图片中包含任何可能的 LaTeX 代码,因为该文件将直接由您的 LaTeX 环境进行渲染。

另一种生成矢量图形的方法是使用 Asymptote 语言。它是一种编程语言,可以生成封装在 Postscript 格式中的矢量图像,并支持任何文本标签中的 LaTeX 语法。

使用 gnuplot 绘制图表

[编辑 | 编辑源代码]

在 LaTeX 文档中包含图表和表格的一种简单方法是在通用的电子表格软件(如 OpenOffice Calc 或 MS Office Excel 等)中创建它们,然后将其作为裁剪后的屏幕截图包含在文档中。但是,这会生成质量较低的栅格化图像。Calc 还允许您将图表复制粘贴到 OpenOffice Draw 中,并将其保存为 PDF 文件。

使用 Microsoft Excel 2010,可以直接将图表复制到 Microsoft Expression Design 4 中,然后将其保存为 PDF 文件。这些 PDF 文件可以包含在 LaTeX 中。这种方法会生成高质量的矢量化图像。

渲染图形的一种极好的方法是通过 gnuplot,这是一款免费且通用的绘图软件,它具有一个特殊的输出过滤器,可以直接导出文件到 LaTeX。我们假设数据存储在 CSV 文件(逗号分隔文本)的第一列和第三列中。绘制数据的简单 gnuplot 脚本如下所示

gnuplot 可以绘制各种数值数据、函数、误差分布以及 3D 图形和曲面
set format "$%g$"
set title "Graph 3: Dependence of $V_p$ on $R_0$"
set xlabel "Resistance $R_0$ [$\Omega$]"
set ylabel "Voltage $V_p$ [V]"
set border 3
set xtics nomirror
set ytics nomirror
set terminal epslatex
set output "graph1.eps"
plot "graph1.csv" using 1:3   #Plot the data

现在 gnuplot 生成了两个文件:图形绘制在graph.eps中,文本在graph.tex中。第二个文件包含 EPS 图像,因此我们只需要将文件 graph.tex 包含在我们的文档中

\input{graph1.tex}

以上步骤可以通过 gnuplottex 包自动完成。通过将 gnuplot 命令放在 \begin{gnuplot}\end{gnuplot} 中,并使用 latex -shell-escape 进行编译,图形就会被创建并添加到您的文档中。

从 Windows 上的 latex 访问 gnuplot 失败可以通过将文件名只写成一个词来解决。不要将您的标题文件命名为 my report.tex,而应该命名为 myreport.tex

当您使用 gnuplottex 时,也可以将终端设置作为参数直接传递给环境。

 \begin{gnuplot}[terminal=epslatex, terminaloptions=color, scale=0.9, linewidth=2 ]
 ...
 \end{gnuplot}

使用 gnuplottex 在某些编辑器中使用导入数据的代数函数时会导致错误的文本高亮显示,例如

 (2*($1)):2

一些编辑器会认为所有后续文本都是公式的一部分,并将其高亮显示(因为“$”被解释为 LaTeX 代码的一部分)。可以通过以下方式避免这种情况:

#$
\end{gnuplot}

它为 gnuplot 解释器取消了美元符号的注释,但不会影响编辑器对 .tex 的解释。

当使用 pdfLaTeX 而不是简单的 LaTeX 时,我们必须将 EPS 图像转换为 PDF 并替换名称。graph1.tex文件。如果我们使用类 Unix shell,它只需使用

eps2pdf graph1.eps
sed -i s/".eps"/".pdf"/g graph1.tex

包含的 tex 文件我们可以像普通图像一样工作。

而不是调用eps2pdf直接,我们也可以包含epstopdf包来自动执行该过程。如果我们现在包含一个图形并省略文件扩展名,epstopdf将自动将 .eps 文件转换为 PDF 并将其插入文本。

\includegraphics{graph1}

这样,如果我们选择输出到 PS 或 DVI,则使用 EPS 版本,如果我们直接输出到 PDF,则使用转换后的 PDF 图形。请注意,使用epstopdf需要使用 latex -shell-escape 编译。

注意:Emacs AucTex 用户可能想查看 Gnuplot-mode

生成 png 屏幕截图

[edit | edit source]

请参阅 导出到其他格式

拼写检查和字数统计

[edit | edit source]

如果您想对文档进行拼写检查,可以使用命令行aspell, hunspell(最好),或ispell程序。

ispell yourfile.tex
aspell --mode=tex -c yourfile.tex
hunspell -l -t -i utf-8 yourfile.tex

所有三个都理解 LaTeX 并会跳过 LaTeX 命令。您也可以使用具有内置拼写检查功能的 LaTeX 编辑器,例如 LyXKileEmacs。另一种选择是 将 LaTeX 源代码转换为纯文本,然后在 OpenOffice.org 或 KOffice 等文字处理程序中打开生成的文本文件。

如果您想统计字数,您可以再次使用 LyX 或将您的 LaTeX 源代码转换为纯文本,并使用例如 UNIXwc命令

detex yourfile | wc

作为detex命令是pdftotext命令,它从 PDF 中提取 ASCII 文本文件

1. pdflatex yourfile.tex
2. pdftotext yourfile.pdf
3. wc yourfile.txt

新偶数页

[edit | edit source]

在 twoside 模式下,您可以通过以下方式获得新的奇数页

\cleardoublepage

但是,LaTeX 不允许您获得新的偶数页。以下方法可以解决这个问题;

以下内容必须放在您的文档序言中

\usepackage{ifthen}

\newcommand{\newevenside}{
	\ifthenelse{\isodd{\thepage}}{\newpage}{
	\newpage
        \phantom{placeholder} % doesn't appear on page
	\thispagestyle{empty} % if want no header/footer
	\newpage
	}
}

要激活新的偶数页,请在您希望新的偶数页出现的地方键入以下内容:

\newevenside

如果给定的页面是奇数页,下一个新页面将是偶数页,LaTeX 将不会做任何事情,而只是一个常规的 \newpage。但是,如果给定的页面是偶数页,LaTeX 将创建一个新的(奇数)页面,插入一个占位符,并创建一个新的(偶数)页面。一种粗略但有效的方法。


[edit | edit source]

如果您想添加一个带有版权和作者信息的侧边栏,您可能需要使用eso-pic包。示例

\usepackage{eso-pic}
...
\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \rotatebox{90}{%
        \begin{minipage}{\paperheight}
          \centering\textcopyright~\today{} Humble me
        \end{minipage} %
      }
    } %
  }%

如果您只想在某一页上添加它,请在您希望添加它的页面上使用 AddToShipoutPicture 命令的带星号版本。(\AddToShipoutPicture*{...})

隐藏辅助文件

[edit | edit source]

如果您使用的是 pdflatex,您可以创建一个文件夹来存储所有输出文件,这样您的顶级目录看起来更干净。

pdflatex -output-directory tmp

请注意,tmp 文件夹应该存在。但是,如果您使用的是基于 Unix 的系统,您可以执行以下操作:

alias pdflatex='mkdir -p tmp; pdflatex -output-directory tmp'

或者对于 vim,修改您的 .vimrc

" use pdflatex
let g:Tex_DefaultTargetFormat='pdf'
let g:Tex_MultipleCompileFormats='pdf,dvi'
let g:Tex_CompileRule_pdf = 'mkdir -p tmp; pdflatex -output-directory tmp 
-interaction=nonstopmode $*; cp tmp/*.pdf .'


前一个:FAQ 索引 下一个:作者
华夏公益教科书