内联数学溢出不会发生在小型页面中,但在其他地方会发生

内联数学溢出不会发生在小型页面中,但在其他地方会发生

在小页面环境中编写时,不可拆分的数学公式绝不溢出到右边距。相反,在当前行中引入间距,并将公式移至下一行。

但是,在自由流动的“顶层”文本中执行相同操作会导致视觉上最不吸引人的溢出,请参见下面的示例。

我查看了手动惩罚,但似乎没有什么合适的。如何在其他地方重现小页面溢出行为?

\documentclass[a4paper]{letter}    
\begin{document}    
\begin{minipage}{12cm}
This is an example paragraph inside a \textit{minipage} showing how text 
    should flow, notice how nothing is pushed onto the margins:

\textbf{Lorem} ipsum dolor sit amet, consectetur adipisicing elit, sed do 
 tempor incididunt ut  et dolore magna aliqua. Ut enim ad minim veniam
 quodque $P, Q , R , S ,T \ldots, X, Y, Z$, quis nostrud exercitation ullamco.
\end{minipage}  
\vspace{2em}

This is an example paragraph without any sections inside the main document,
  and here the math environment overflows into the margin:

\textbf{Lorem} ipsum dolor sit amet, consectetur adipisicing elit, sed do 
 tempor incididunt ut  et dolore magna aliqua. Ut enim ad minim veniam
 quodque $P, Q , R , S ,T \ldots, X, Y, Z$, quis nostrud exercitation ullamco.  
\end{document}

例子

答案1

首先,你应该比较同类项。如果你\showthe\linewidth在文档的主要部分使用,你会看到它的值为,345.0pt略大于12cm = 341.43306pt。进行真正的测试最简单的方法是编写

\begin{minipage}{\linewidth}
 ...
\end{minipage}

无论如何,考虑到这一点,您仍然会得到类似的输出差异。这主要是由于启动时minipage调用了该函数所致。\sloppy

与你的要求相反,你可以通过以下方式全局撤消该特定设置

\makeatletter
\def\@minipagerestore{\fussy}
\makeatother

通过这两项改变

\documentclass[a4paper]{letter}    

\makeatletter
\def\@minipagerestore{\fussy}
\makeatother
\begin{document}    

\begin{minipage}{\linewidth}
This is an example paragraph inside a \textit{minipage} showing how text 
    should flow, notice how nothing is pushed onto the margins:

\textbf{Lorem} ipsum dolor sit amet, consectetur adipisicing elit, sed do 
 tempor incididunt ut  et dolore magna aliqua. Ut enim ad minim veniam
 quodque $P, Q , R , S ,T \ldots, X, Y, Z$, quis nostrud exercitation ullamco.
\end{minipage}  
\vspace{2em}

This is an example paragraph without any sections inside the main document,
  and here the math environment overflows into the margin:

\textbf{Lorem} ipsum dolor sit amet, consectetur adipisicing elit, sed do 
 tempor incididunt ut  et dolore magna aliqua. Ut enim ad minim veniam
 quodque $P, Q , R , S ,T \ldots, X, Y, Z$, quis nostrud exercitation
 ullamco.  

\end{document}

你得到

示例输出

请注意,在 中段落之间没有空格minipage。这是因为minipage设置\parskip0pt,但在letterclass 中它被设置为6.99997pt

标准设置的参数列表minipage可以在source2e文档。您可以看到它还设置了0pt以下参数

\parindent
\@totalleftmargin
\leftskip
\rightskip
\@rightskip

此外,它还设置

\parfillskip = 0pt plus 1fil
\lineskip = \normallineskip
\baselineskip = \normalbaselineskip

\@listdepth = \@mplistdepth

后者最初是0,并 @minipage设置为 true:相当多的命令在操作过程中会检查最后一个值,因此在 中的行为有所不同minipage

无论如何,最简单的换行方法minipage是发出\sloppy,正如 Steven Segletes 所说。当然,现在你正在抛弃 LaTeX 的许多尝试,以实现良好的换行。一般来说,最好修复错误的换行。在这种情况下,你应该允许在数学表达式中的逗号处换行:

\documentclass[a4paper]{letter}    

\begin{document}

\textbf{Lorem} ipsum dolor sit amet, consectetur adipisicing elit, sed
do tempor incididunt ut et dolore magna aliqua. Ut enim ad minim
veniam quodque $P,\allowbreak Q ,\allowbreak R ,\allowbreak S
,\allowbreak T,\allowbreak \ldots,\allowbreak X,\allowbreak
Y,\allowbreak Z$, quis nostrud exercitation ullamco.

\end{document}

带分隔逗号的示例

要自动执行此操作,请参阅在内联数学模式中允许在“,”处换行吗?打破内联数学公式

相关内容