如何正确编码 TeX 文件,或者至少避免“badness 10000”

如何正确编码 TeX 文件,或者至少避免“badness 10000”

我正在编写一个 TeX 文件,虽然 .pdf 可以正确呈现,但我使用“石器时代”工具对其进行编码。例如,我习惯\\在两个段落之间或在每个段落开头留出一行空白\noindent。基本上,我只是使用我拥有的基本 TeX 数据来编写论文,但我确信有些东西可以用更好、更合适的代码替换,因为我得到了badness 10000。这是控制台:

*geometry* detected driver: pdftex
("C:\Archivos de programa\MiKTeX 2.9\tex\latex\amsfonts\umsa.fd")
("C:\Archivos de programa\MiKTeX 2.9\tex\latex\amsfonts\umsb.fd")
Underfull \hbox (badness 10000) in paragraph at lines 10--11
[1{C:/Documents and Settings/All Users/Datos de programa/MiKTeX/2.9/pdftex/conf
ig/pdftex.map}]
Overfull \hbox (10.8009pt too wide) detected at line 49
\OML/cmm/m/it/14.4  [] \OT1/cmr/m/n/14.4 + 1 = [] [] \OML/cmm/m/it/14.4 x \OT1
/cmr/m/n/14.4 + [] [] \OML/cmm/m/it/14.4 x
[2]
Overfull \hbox (26.66542pt too wide) in alignment at lines 80--82
 [][][] []
[3]
Overfull \hbox (23.60692pt too wide) detected at line 90
\OML/cmm/m/it/14.4  [] \OMS/cmsy/m/n/14.4 ><C:/Archivos de programa/MiKTeX 2
.9/fonts/type1/public/amsfonts/symbols/msbm10.pfb>

我猜这些错误都是基本的,我怎样才能清除这些错误呢?

答案1

切勿使用\\在段落之间添加空格。以下是简单的代码:

\documentclass{article}

\begin{document}

text\\    
text
\end{document}

产生消息

Underfull \hbox (badness 10000) in paragraph at lines 5--6

除了用警告堵塞控制台输出和 .log 文件之外,\\\par在使用此组合后立即发生分页符时,还会产生真正不良的影响,如使用以下简单示例所示:

\documentclass{article}
\usepackage{showframe}% just for the example

\begin{document}

\vspace*{44\baselineskip}
test text\\

test text

\end{document}

第二页顶部的图像:

在此处输入图片描述

第二页开头有一个虚假的空白行,这无疑使布局变得丑陋和不一致(感谢大卫·卡莱尔其中提到了这个问题)。

如果要抑制缩进并增加段落之间的垂直间距,则至少有三个选择:

  1. 设置\parindent0pt(抑制缩进)并使用\smallskip或增加段落之间的垂直跳过;例如\medskip\bigskip

    \documentclass{article}
    \usepackage[nopar]{lipsum}
    
    \setlength\parindent{0pt}% globally suppress indentation
    
    \begin{document}
    
    \lipsum[2]\medskip
    
    \lipsum[2]
    
    \end{document}
    

给出

在此处输入图片描述

  1. 加载帕斯基普包。例如:

    \documentclass{article}
    \usepackage{parskip}
    \usepackage[nopar]{lipsum}
    
    \begin{document}
    
    \lipsum[2]
    
    \lipsum[2]
    
    \end{document}
    

生成:

在此处输入图片描述

  1. 使用其中一个KOMA 脚本parskip=文档类和or系列的选项之一halfparskip=(有关详细信息,请参阅文档)。例如:

    \documentclass[parskip=full+]{scrartcl}
    \usepackage[nopar]{lipsum}
    
    \begin{document}
    
    \lipsum[2]
    
    \lipsum[2]
    
    \end{document}
    

生成:

在此处输入图片描述

只是为了解释为什么使用\\后跟空行(或\par命令)会产生警告:

当 TeX 结束一个段落时,它会插入类似

\unskip \penalty10000 \hskip\parfillskip

这样做\\\par会导致

\\ \unskip \penalty10000 \hskip\parfillskip

由于没有找到前置的粘连,所以\unskip没有效果,因此\\后面跟着一个惩罚和一个粘连,粘连会在换行后消失;但是,TeX 已经期待一个额外的行,但没有东西来填充它,所以会导致出现一个未满的盒子。

相关内容