与 {\bfseries ...} 相比,\begin{bfseries} 中的空间过多

与 {\bfseries ...} 相比,\begin{bfseries} 中的空间过多

下面的句子用 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

描述

  • 插入%,因此行尾不插入空格(在代码中)
  • 或者直接使用\textbf{...}

结果

在此处输入图片描述

代码

\documentclass[12pt]{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.

\end{document}

答案2

我认为\begin{env}包装器这一想法\env是 LaTeX 的一个设计错误。唉,40 年后,这一点真的不可能改变。

环境称为bfseriesitshapelarge类似名称。使用\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}

但是,这再次要求每次都思考需要什么。

如果您确实愿意,请定义您自己的环境来纠正这些不良行为,并避免使用声明作为环境。

相关内容