我有一个问题Overfull \hbox (13.62198pt too wide) in paragraph at lines 49--50
。我读过类似的问题,所有的解决方案都是直接在文本中引入手动干预 - 例如使用换行符、来自另一个包的命令围绕有问题的文本等。如果您无法决定,我想在文档开头定义一些设置,例如在空格处换行。我想尽可能避免手动工作。
我有问题的文本行是:
\开始{逐项列举} \item 探究语言 $\mathcal{L}$ 由 $\mathcal{C}_o=\{milk, curry, rice\}$,$\mathcal{R}_o=\{TastesHot, IsWhite, ContainsSpice, ContainsSugar\}$, $\mathcal{F}_o=\{\}$ 给出。 \item 设观察语言 $\mathcal{L}_o$ 为 $\mathcal{C}_o=\{milk, curry, rice\}$, $\mathcal{R}_o=\{TastesHot, IsWhite\}$, $\mathcal{F}_o=\{\}$ \item 设假设语言$\mathcal{L}_h$为$\mathcal{C}_h=\{milk, curry, rice\}$, $\mathcal{R}_h=\{TastesHot, IsWhite, ContainsSpice\}$, $\mathcal{F}_h=\{\}$。 \item $\mathcal{L}_h$-句子为 $\forall x. TastesHot(x) \implies ContainsSpice(x)$、$\forall x. IsWhite(x) \lor TastesHot(x)$。 \end{逐项列举}
文档开头的设置是:
\documentclass[a4paper,12pt,twoside]{报告} \usepackage[左=2cm,右=2cm,上=2cm,下=3cm]{几何} \usepackage{amsthm} \usepackage{amsmath}
模板代码如下:
\pagestyle{空} \setlength{\parskip}{2ex 加 0.5ex 减 0.2ex} \setlength{\parindent}{0pt} \makeatletter %避免“\@”产生的错误消息。使 Latex 将“@”视为字母 \linespread{1.5} \def\提交日期#1{\gdef\@提交日期{#1}} \def\maketitle{ \开始{标题页}{ %\linespread{1.5} \伦敦大学\\ %\越线 帝国理工学院 %\越线 计算系 \R M \vskip 3in \大 \bf \@title \par } \vskip 0.3英寸 \par {\大\@author} \vskip 2.9英寸 \par 提交部分内容以满足工程学硕士学位的要求 \越线 伦敦帝国理工学院计算机(人工智能)专业 \越线 \@提交日期 \vfil \end{标题页} } \def\titlepage{ \新一页 \定心 \linespread{1} \正常尺寸 \vbox 改为 \vsize\bgroup\vbox 改为 9in\bgroup } \def\endtitlepage{ \par \kern 0pt \egroup \vss \egroup \清除双页 } \def\摘要{ \开始{中心}{ \large\bf 摘要} \结束{中心} \小的 %\def\baselinestretch{1.5} \linespread{1.5} \正常尺寸 } \def\endabstract{ \par } \newenvironment{致谢}{ \清除双页 \开始{中心}{ \large \bf 致谢} \结束{中心} \小的 \linespread{1.5} \正常尺寸 }{\cleardoublepage} \def\endacknowledgements{ \par } \newenvironment{奉献精神}{ \清除双页 \开始{中心}{ \large \bf 奉献} \结束{中心} \小的 \linespread{1.5} \正常尺寸 }{\cleardoublepage} \def\enddedication{ \par } \def\preface{ \pagenumbering{罗马} \pagestyle{普通} \doublespacing } \def\body{ \清除双页 \pagestyle{uheadings} \目录 \pagestyle{普通} \清除双页 \pagestyle{uheadings} \表列表 \pagestyle{普通} \清除双页 \pagestyle{uheadings} \图列表 \pagestyle{普通} \清除双页 \pagestyle{uheadings} \pagenumbering{阿拉伯语} \doublespacing } \makeatother %避免“\@”产生的错误消息。使 Latex 将“@”视为字母
注意,这些有空格,我不明白为什么 Latex 会抱怨。我是 Latex 的新手,也许一个简单的设置就能解决我的问题。
答案1
您已经分离了不同的元素,在组成每种语言的不同方程式之间提供了空格,并将这些方程式分别编码为数学(即使前两个方程式之间的空格可能被无意中省略了)。不幸的是,这些空格并不位于最适合 tex 换行的位置。
最终目标是让所呈现的内容被人们理解。
该建议分为两部分。
首先,正如您所说,“牛奶、咖喱、米饭”这几个词是常量,因此应该使用文本字体,最好不要使用斜体,即使它们是数学表达式的一部分。正如您在原文中所编码的,它们被排版为变量相乘的字符串。这些可以编码为\mathrm{<word>}
,但这无助于换行。它也不会在逗号后留下空格,尽管在这种情况下,读者不会误解那里是否可见空格。
另一种处理方法是将它们识别为文本,并输入为,例如,
$\mathcal{C}_o=\{\text{milk, curry, rice}\}$
但这对换行也无帮助,因为在这种情况下,唯一“允许”的换行是在等号后面。
因此,建议的第二部分是利用这样一个事实:如果一行被打断,读者不太可能误解它的意思之内该常量字符串,并(暂时)终止左括号后的数学运算,并在结束括号后恢复它:
$\mathcal{C}_o=\{$milk, curry, rice$\}$
为了说明,对“所有数学”实例使用强制换行符,比较以下两行:
这是产生图像的输入:
\begin{itemize}
\item The language of enquiry $\mathcal{L}$ is given by
$\mathcal{C}_o=\{milk, curry, rice\}$,\\
$\mathcal{R}_o=\{TastesHot, IsWhite, ContainsSpice, ContainsSugar\}$,
$\mathcal{F}_o=\{\}$.
\item The language of enquiry $\mathcal{L}$ is given by
$\mathcal{C}_o=\{$milk, curry, rice$\}$,
$\mathcal{R}_o=\{$TastesHot, IsWhite, ContainsSpice, ContainsSugar$\}$,
$\mathcal{F}_o=\{\}$.
\end{itemize}
(顺便说一句,这并不是一个简单的例子。)