始终以罗马体书写 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 }}

i.e. 和 e.g.(即和例如)
如果你仅使用 “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}

同样的方法也可以用于类似的计数器类型和文档单位,比如 “subsection”。

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

早期,LaTeX 用户使用 Xfig 进行绘图。尽管如此,这个编辑器仍然被一些人使用,因为它具有“导出到 LaTeX”功能。它还为图像中的 LaTeX 文本和数学提供了基本的封装方法(将文本的“特殊标志”设置为“special”而非“normal”)。导出时,所有的 LaTeX 文本将被放入一个 .tex 文件,而图像的其余部分则存放在一个 .ps 文件中。

一个更新且更易使用的专为 LaTeX 设计的矢量图形编辑器是 IPE。它允许在图像中使用任何 LaTeX 命令,包括数学公式。该程序将文件保存为可编辑的 .eps 或 .pdf 文件,这样每次编辑图像后无需重新导出。

另一个非常多功能的矢量图形编辑器是 Inkscape。它本身不支持 LaTeX 文本,但你可以使用插件 Textext 来实现。这个插件允许你在图像中插入任何 LaTeX 代码。此外,从版本 0.48 开始,你可以将文本与图形分开导出为 .tex 文件。这种方法使得文本由 LaTeX 编译器直接渲染。

使用 gnuplot 绘制图表
将图表和图形包含到 LaTeX 文档中的一个简单方法是通过常见的电子表格软件(如 OpenOffice Calc 或 Microsoft Excel)创建图表,并将其作为截图插入到文档中。然而,这种方法会生成质量较差的栅格图像。Calc 还允许你将图表复制并粘贴到 OpenOffice Draw 中,并将其保存为 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   # 绘制数据

现在,gnuplot 会生成两个文件:graph.eps 作为图形文件,graph.tex 作为包含 EPS 图像的文本文件。因此,我们只需要在文档中包含 graph.tex 文件:

\input{graph1.tex}

以上步骤可以通过 gnuplottex 包自动化。将 gnuplot 命令放在 \begin{gnuplot} \end{gnuplot} 中,并使用 latex -shell-escape 编译,图形将自动生成并添加到文档中。

如果在 Windows 上无法访问 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 时
如果使用 pdfLaTeX 而不是简单的 LaTeX,我们必须将 EPS 图像转换为 PDF,并在 graph1.tex 文件中替换文件名。如果使用类 Unix 的 shell,可以简单地使用以下命令:

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

使用包含的 tex 文件,我们可以像使用普通图像一样进行操作。

我们还可以通过包含 epstopdf 包来自动化该过程。如果现在包含图形并省略文件扩展名,epstopdf 将自动将 .eps 文件转换为 PDF 并插入到文本中:

\includegraphics{graph1}

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

生成 PNG 截图
请参见“导出到其他格式”。

拼写检查和字数统计

如果你想对文档进行拼写检查,可以使用命令行工具如 aspell、hunspell(推荐使用)或 ispell。

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

这三种工具都能理解 LaTeX 并跳过 LaTeX 命令。你也可以使用带有内建拼写检查功能的 LaTeX 编辑器,如 LyX、Kile 或 Emacs。另一种选择是将 LaTeX 源代码转换为纯文本,然后在文字处理器中打开该文件,如 OpenOffice.org 或 KOffice。

如果你想统计字数,同样可以使用 LyX 或将 LaTeX 源代码转换为纯文本,然后使用 UNIX 的 wc 命令:

detex yourfile | wc

detex 命令的替代方法是 pdftotext 命令,它从 PDF 中提取 ASCII 文本文件:

  1. pdflatex yourfile.tex

  2. pdftotext yourfile.pdf

  3. wc yourfile.txt

新偶数页
在双面打印模式下,你可以通过以下方式获得新的奇数页:

\cleardoublepage

然而,LaTeX 不提供获取新偶数页的功能。以下方法解决了这一问题:

在文档的前言部分插入以下内容:

\usepackage{ifthen}

\newcommand{\newevenside}{
	\ifthenelse{\isodd{\thepage}}{\newpage}{
	\newpage
        \phantom{placeholder} % 不显示页面
	\thispagestyle{empty} % 如果不想要页眉/页脚
	\newpage
	}
}

要激活新偶数页,在所需的位置输入:

\newevenside

如果当前页面是奇数页,下一页将是偶数页,LaTeX 只会执行一个普通的 \newpage。然而,如果当前页面是偶数页,LaTeX 会创建一个新的奇数页,放置一个占位符,然后再创建一个新的偶数页。虽然这种方法有些粗糙,但有效。

带有息的侧边栏
如果你想在页面上添加版权息和作者等侧边栏,可以使用 eso-pic 包。例如:

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

如果你只想在一页上显示,可以在想要显示的页面上使用 \AddToShipoutPicture*{...}

隐藏辅助文件
如果你使用 pdfLaTeX,你可以创建一个文件夹,所有输出文件将存储在该文件夹中,这样你的顶级目录看起来更干净:

pdflatex -output-directory tmp

请注意,tmp 文件夹应该存在。如果你使用基于 Unix 的系统,可以像这样操作:

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

或者,在 vim 中修改你的 .vimrc

" 使用 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 .'

最后修改: 2025年04月23日 星期三 12:48