下面的句子用 pdflatex 编译时,第一句中粗体部分之间的间距比第二句中粗体部分之间的间距大。为什么会这样?有没有办法让第一句的间距正确?
在编写生成乳胶代码的程序时遇到了这个问题,如果可能的话,我宁愿使用 \begin{} ... \end{} 结构进行文本格式化。
\documentclass[12pt]{article}
\begin{document}
A sentence with
\begin{bfseries}
some words
\end{bfseries}
in bold.
A sentence with {\bfseries some words} in bold.
\end{document}
答案1
答案2
我认为\begin{env}
包装器这一想法\env
是 LaTeX 的一个设计错误。唉,40 年后,这一点真的不可能改变。
有不环境称为bfseries
、itshape
或large
类似名称。能使用\begin{bfseries}...\end{bfseries}
,但应该知道实际发生了什么。
您的输入中有一个空格
- 前
\begin{bfseries}
- 后
\begin{bfseries}
- 后
words
- 后
\end{bfseries}
它们都来自结束行。相反,没有添加空格
A sentence with {\bfseries some words} in bold.
但当然,最好这样做
A sentence with \textbf{some words} in bold.
通过按相同顺序排版这三个版本,我们就能明白原因。
\documentclass{article}
\begin{document}
A sentence with
\begin{bfseries}
some words
\end{bfseries}
in bold.
A sentence with {\bfseries some words} in bold.
A sentence with \textbf{some words} in bold.
{\bfseries if} text
\textbf{if} text
\end{document}
由于示例中与{\bfseries ...}
和 的区别不太明显,我又添加了两个测试。在最后一个测试中,您会看到“if”和“text”之间的空格更多,这是由于在字体更改时添加了斜体校正。\textbf{...}
伪环境bfseries
是安全的,如果使用之间段落。否则,您需要屏蔽一些结束行,从而限制输入的清晰度。
另一方面,简单的测试表明,\begin{large}...\end{large}
段落之间或类似的情况也很糟糕。我使用是scriptsize
为了更好地展示问题。
\documentclass{article}
\usepackage[nopar]{lipsum}
\begin{document}
\lipsum[1][1-4]
\begin{scriptsize}
\lipsum[1][1-4]
\end{scriptsize}
\lipsum[1][1-4]
{\scriptsize\lipsum[1][1-4]\par}
\end{document}
如您所见,第二段排版时基线距离与 有关\normalsize
,而不是\scriptsize
。最后一段排版正确。当然,您可以这样做
\begin{scriptsize}
\lipsum[1][1-4]\par
\end{scriptsize}
但是,这再次要求每次都思考需要什么。
如果您确实愿意,请定义您自己的环境来纠正这些不良行为,并避免使用声明作为环境。