请原谅我使用了这种搞笑的标题。我有一份很长的报告,中间有一句话
Let $\mathcal{L}$ : $\mathcal{O}$ $\rightarrow$ $\mathcal{S}$ be a function
这在报告中显示如下图第三行。
现在我希望函数声明L:O->S
在一行中。有什么办法吗?
此外,报告中还有另一行
For example, a square lattice has the security classes, $\mathcal{S}$ = \{\textit{Unclassified},\textit{$Secret_1$},\textit{$Secret_2$},\textit{Top Secret}\}.
这一行在报告中显示如下
我不想S = {Unclassified, Secret1, Secret2, Top Secret}
超出范围。这个问题的 MWE 是:
\documentclass{report}
\begin{document}
For example, a square lattice has the security classes, $\mathcal{S}$ = \{\textit{Unclassified},\textit{$Secret_1$},\textit{$Secret_2$},\textit{Top Secret}\}.
\end{document}
有什么办法吗?
答案1
避免行内公式中的换行
对于第一个问题,可能需要稍微重新排列/重新措辞。
例如,您可以重新措辞前面的句子,使其稍微长一些,并且公式(连同其引入“Let”)被推到下一行。
正如评论中所建议的,另一种选择是通过$
用 和\[
替换对,将公式转变为显示的公式\]
。
还有第三种解决方案:强制使其不可中断,用 , 将其包装起来\mbox
,或插入临时换行符。我不建议这样做,因为其他选项也可以和如果你选择这个,请考虑这样做只有当文本稳定时并且只需要收尾工作。这是因为如果后续更改不再需要手动调整,您最终可能会得到次优或完全错误的布局。
数学模式下逗号不换行
第二个问题是由于数学模式中的逗号不标记换行点而引起的。为了解决这个问题,我使用了以下宏:
\mathchardef\breakingcomma\mathcode`\,
{\catcode`,=\active
\gdef,{\breakingcomma\discretionary{}{}{}}
}
\newcommand{\commabr}[1]{\mathcode`\,=\string"8000 #1}
解释起来有点复杂,但它定义了一个命令\commabr
,您可以使用它来括起公式区域,以便用逗号标记“可断点”(例如$S = \{\commabr{\mathit{Unclassified}, \mathit{Secret1}, \mathit{Secret2}, \mathit{Top Secret}}\}$
:)
答案2
第二个问题可以通过在逗号旁边添加空格来解决。如下所示:
$\mathcal{S}$ = \{\textit{Unclassified}, \textit{$Secret_1$}, \textit{$Secret_2$}, \textit{Top Secret}\}.