跳转到内容

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. Picture
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 创建 3D 图形

编程

  1. Plain TeX
  2. 创建软件包
  3. 创建软件包文档
  4. 主题

其他

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

帮助和建议

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

附录

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

编辑此框编辑目录

边距过大

[编辑 | 编辑源代码]

LaTeX 的默认边距可能看起来太大。在大多数情况下,这是首选的默认值,并且可以提高可读性。

如果您仍然不同意,您可以轻松地使用以下方法更改它们

\usepackage{geometry}
% or
\usepackage[margin=1.5in]{geometry}

请参见 页面布局

避免源代码中出现过多的双行断行

[编辑 | 编辑源代码]

太多一行或两行的段落看起来不太好。

请记住 TeX 规则

  • 如果找到两个或多个连续的换行符,TeX 将开始一个新段落。
  • 如果只找到一个换行符,TeX 会插入一个空格,前提是它前面或后面没有空格。

您可能很想一直放置空白行来提高源代码的可读性,但这会影响格式。解决方案很简单:在空白行的开头放置一个注释。这将阻止 TeX 看到另一个换行符——注释后的所有字符(包括下一个换行符)都会被忽略。

示例

We are in the first paragraph here.
%
We are still in the first paragraph.

This time, this is another paragraph.

简化特殊字符输入

[编辑 | 编辑源代码]

只要您的计算环境支持 UTF-8,您就可以直接输入特殊字符,而不是输入 TeX 命令来表示变音符号和其他扩展字符。例如,

R\'esum\'e can also be written résumé.

这需要

  • 您的文本编辑器支持并设置为以 UTF-8 保存您的文件;
  • 在序言中添加 \usepackage[utf8]{inputenc} 行。

避免使用 latin1。请参见 特殊字符

直接写入欧元符号

[编辑 | 编辑源代码]

在您的序言中添加以下几行

\usepackage[utf8]{inputenc}
\usepackage{marvosym}
\DeclareUnicodeCharacter{20AC}{\EUR{}}

LaTeX 段落标题在同一行上显示标题和内容

[编辑 | 编辑源代码]

有些人不喜欢 \paragraph{...} 将标题与内容写在同一行的方式。这实际上在很多文档中都很常见,并没有看起来那么奇怪。

但是,有一些方法可以绕过默认行为;请参见 \paragraph 换行符 了解更多信息。

字体难看/锯齿/位图PDF 搜索失败从 PDF 中复制/粘贴很乱

[编辑 | 编辑源代码]

您一定是使用 OT1 编码(默认编码)的变音符号(例如重音)。切换到 T1 编码

\usepackage[T1]{fontenc}

如果您在更改字体编码后遇到难看的锯齿字体,那么您没有可用的 Type1 兼容字体。安装 Computer Modern SuperLatin Modern(软件包名称可能是 lm)。要使用 Latin Modern,您需要包含软件包

\usepackage{lmodern}

请参见 字体 以获取解释。

手动格式化:使用换行符和分页符

[编辑 | 编辑源代码]

确实应该避免手动换行和分页。TeX 引擎负责这些。手动格式化的一大问题是它不是动态的。即使它第一次看起来很正确,如果您在手动格式化之前更改了任何内容,内容很可能最终会呈现得很糟糕。

建议在文档的分节最高层级(例如,部分或章节)中使用分页符(尽管当您开始一个新的部分或章节时,LaTeX 通常会为您执行此操作)。当您手动插入分页符时,您应该使用 \clearpage\cleardoublepage,这将打印当前浮动图片,然后开始一个新页面。

如果您绝对必须手动插入换行符或分页符,您应该在确保完成文档后执行此操作,这样以后您就不必再回来更新它了。

始终以{} 结束命令

[编辑 | 编辑源代码]

TeX 有一条不直观的规则:如果控制序列(命令)后面没有一对花括号(无论中间是否有参数),那么后面的空格字符将被忽略。LaTeX 不会打印任何空格,并且命令(例如 TeX 或 LaTeX 的徽标)会与后面的单词连在一起。

要解决这个问题,请在命令后面使用一对花括号,即使没有参数。例如

\LaTeX is great. % BAD !
\LaTeX{} is great. % GOOD !

(技术解释:控制序列名称只能由字符码为 11 的字符组成,默认情况下即为 A-Z 和 a-z。TeX 通过反斜杠知道控制序列名称的起始位置,并在遇到第一个非字符码为 11 的字符时知道控制序列名称的结束位置。然后跳过该字符。由于连续的空格已经连接成一个空格,因此没有空格被考虑在内。)

可以通过使用 xspace 包来定义宏,该宏将动态插入空格。

  • 如果命令后面没有花括号并且有空格,则会追加一个额外的空格。
  • 如果有花括号,则不会打印额外的空格。

示例

\usepackage{xspace}
\let\latexold\LaTeX
\renewcommand{\LaTeX}{\textrm{\latexold}\xspace}
...
\LaTeX is followed by a space.
\LaTeX{} is followed by a space.
\LaTeX{}is not followed by a space.

避免使用粗体和下划线

[编辑 | 编辑源代码]

从排版角度来说,在段落中间使用粗体或下划线格式通常是不好的做法。这已经成为传统文字处理软件用户的常见习惯,因为这两个功能很容易使用(以及斜体)。

然而,粗体和下划线会使文本显得过重,分散读者注意力。当您开始阅读一个段落,其中间有一个粗体字时,您经常会先阅读强调的部分,从而破坏了内容并打乱了想法的顺序。斜体不那么明显,而且不像普通字符那样显得更重,因此在强调少量文本时通常是更好的选择。

粗体和下划线的原始和更恰当的用法是用于特殊部分,例如标题、索引、术语表等。(实际上,下划线在专业环境中很少使用。)

LaTeX 有一个宏 \emph{...},用于使用斜体强调文本。它应该优先于 \textit{...},因为 \emph{...} 将在其他斜体文本中以常规字体正确打印强调的文本。

使用图形的正确方法

[编辑 | 编辑源代码]

习惯使用 Microsoft Word 或 LibreOffice 等所见即所得文字处理软件的用户经常会对图形感到沮丧。答案很简单:图形不是图片!

如果您使用 \includegraphics 而不将其包含在 figure 环境中,它将与文字处理软件中的行为相同,将图片放置在源代码中放置图片的位置。

图形是一种浮动对象,它是一种虚拟对象,LaTeX 可以将其放置在与创建位置不同的位置,这有助于防止文本因图片和表格而变得杂乱。

有关更多详细信息,请参阅导入图形浮动对象、图形和标题

文本停止对齐

[编辑 | 编辑源代码]

您很可能在某个时候使用了 \raggedleft\raggedright\centering,并忘记将其关闭。这些命令是开关——它们一直处于活动状态,直到作用域结束,或者如果没有作用域,则直到文档结束。有关更多信息,请参阅段落对齐

标点符号和间距规则

[编辑 | 编辑源代码]

LaTeX 会为您做一些工作,但不是所有工作。特别是关于标点符号,您可以随意做您想做的事情。每种语言的标点符号规则都不同。在英语中,标点符号之前没有空格,之后有一个空格。

有很多规则,但您可以快速查看维基百科

在 Babel 语言更改后编译失败

[编辑 | 编辑源代码]

这是 Babel 的一个限制。删除.aux文件(或清理项目),然后尝试再次编译。

快速或正确学习 LaTeX

[编辑 | 编辑源代码]

如今,使用搜索引擎和复制粘贴网页内容来“学习”非常普遍。与任何编程语言一样,这通常是一种不好的方法,会导致缺乏控制、意外结果以及很多沮丧。真正学习 LaTeX 并不难,而且也不需要很长时间。本书中的大多数章节都专门针对特定的用法,因此基础知识实际上很快就能学会。

如果您对某个特定软件包感到沮丧,请确保阅读其官方文档,这通常是最好的信息来源。在网上找到的内容,即使在这本书中,也不如官方文档那么准确。不准确的信息可能会导致错误,而您却不知道原因。

您花在学习上的时间是值得的,并且它很快就会弥补您如果没有正确学习而一直卡住而损失的时间。

不间断空格

[编辑 | 编辑源代码]

这个有用的功能大多数新手都了解,尽管它在大多数所见即所得文字处理软件上都可用。两个标记(例如单词、标点符号)之间的不间断空格可以防止处理器在它们之间插入换行符。这对一致阅读非常重要。LaTeX 使用“~”符号作为不间断空格。

您通常会为某些语言中的标点符号、单位和货币、首字母缩写词等使用不间断空格。

例如,在法语排版中,您会在所有两部分标点符号之前放置一个不间断空格。例如

Il répondit~: «~Ce pain coûte-t-il 2~€~?~»

请注意,像这样写法语可能会非常痛苦。幸运的是,Babel 具有 frenchb 选项,它将处理所有标点符号的不间断空格。在上面的例子中,只需保留欧元符号的不间断空格。

智能数学

[编辑 | 编辑源代码]

所有由字母、变量或其他符号指定的虚拟对象都应使用专门的格式。对于数学和其他许多领域,LaTeX 数学格式是完美的。例如,如果您想引用一个对象A,请写

Speaking of $A$, let's say...

如果您想在一个句子中引用多个对象,则相同。

Speaking of $A$, $B$ and $C$...

如果您引用一组对象,您仍然可以使用数学符号。

The family $(A, B, C)$ is...

请注意,这与通常的文本括号不同。

A sentence. ($A$, $B$, and $C$ are not concerned, but we do not mean the $(A, B, C)$ family.)

使用矢量图形而不是光栅图像

[编辑 | 编辑源代码]

光栅(位图)图形缩放效果很差,并且经常会产生锯齿或低质量的结果,与文档质量冲突,特别是在打印时。

使用矢量(线型)图形代替,无论是通过 LaTeX 的原生绘图工具还是通过从您的绘图或图表工具导出矢量格式,都将产生更高质量的结果。在可能的情况下,您应该优先考虑 PDF、EPS 或 SVG 图形而不是 PNG 或 JPG。

拉伸表格

[编辑 | 编辑源代码]

尝试使用默认的 tabular 环境拉伸表格,通常会导致意外结果。不错的 tabu 软件包将实现您想要的功能,甚至更多。或者,如果您无法使用 tabu 软件包,您可以尝试 tabularxtabulary 软件包。参阅表格

表格比您想象的更容易

[编辑 | 编辑源代码]

即使表格章节相当长,也值得一读。最终,你只需要了解你选择的环境的一些知识。

一些 LaTeX 编辑器具有表格助手功能。此外,许多电子表格应用程序具有 LaTeX 导出功能(或插件)。同样,有关更多详细信息,请参阅表格

简化繁琐的代码(列表和长命令名)

[编辑 | 编辑源代码]

LaTeX 有时写起来很麻烦,特别是如果你没有使用合适的编辑器。请参阅编辑器以了解一些有趣的选项。

你可以定义别名以缩短一些命令。

\usepackage{xspace}
\newcommand{\tss}[1]{\textsuperscript{#1}}
\newcommand{\tbs}[1]{\textbackslash\xspace}

这里xspace 包裹可以帮助避免吞掉空格。

对于列表,你可能想尝试使用easylist 包裹。现在编写列表就像

\usepackage[ampersand]{easylist}
% ...

\begin{easylist}
& Item 1
& Item 2
&& Subitem 1
&&& Subsubitem 1
& Item 3
&& Subitem 1
\end{easylist}

减小 LaTeX 安装文件的大小

[编辑 | 编辑源代码]

安装 文章详细介绍了如何在 100 MB 以内手动安装一个功能齐全的 TeX 环境,包括 LaTeX 和其他功能。


上一页:导出到其他格式 索引 下一页:技巧和窍门
华夏公益教科书