我想在新定理环境中有一个长的数学模式“标题”:
\documentclass[twocolumn]{article}
\usepackage{amsthm}
\newtheorem{definition}{Definition}
\begin{document}
\begin{definition}
[$ABC \rightarrow DEF \rightarrow GHI \rightarrow JKL \rightarrow MNO \rightarrow PQR$]
Here's some text that runs over onto the next line, to show the overrun.
\end{definition}
\end{document}
但是,虽然如果标题是文本,文本会正确换行,但内联数学模式标题似乎不会换行。(由于它不是显示数学,因此期望它换行似乎是合理的,但也许我错了。)
我在这里使用的特定公式具有说明性:我想要一些可以与任意(可破坏)数学公式一起使用的东西。
有一些重叠latex 中 newtheorem 溢出那里讨论的“手动干预”(自己格式化定理的名称)当然有效,但我想知道是否有更好的解决方案。
另请注意,我正在使用amsthm
。
答案1
在没有其他建议的情况下,这里有两种有点黑客的方法:
\allowbreak
在数学字符串中的适当位置插入;MNO
在这种情况下,就在之前似乎是最好的。定义一个
\newtheoremstyle
没有结尾句号的,将“可选”部分移到主文本中,超出其范围\trivlist
(我真的不喜欢将用作\trivlist
这种元素!),然后自行插入结束标点符号。
这是第二种方法的代码:
\documentclass[twocolumn]{article}
\usepackage{amsthm}
\newtheorem{definition}{Definition}
\makeatletter
\newtheoremstyle{defnopunct}%
{\thm@preskip}{\thm@postskip}%
{\itshape}% body font
{\z@}% indent
{\bfseries}% theorem head font
{}% punctuation after theorem head
{ }% space after theorem head
{}% "theorem head spec"; empty = "normal"
\makeatother
\theoremstyle{defnopunct}
\newtheorem{defnopunct}[definition]{Definition}
\begin{document}
\begin{defnopunct}
\textup{($ABC \rightarrow DEF \rightarrow GHI \rightarrow JKL \rightarrow MNO \rightarrow PQR$)}\textbf{.}
Here's some text that runs over onto the next line, to show the overrun.
\end{defnopunct}
\end{document}
奇怪的是,如果长可选材料是普通文本,就不会出现问题;这个错误在 1999 年被捕获并消灭,但从来没有人用长数学表达式尝试过它,或者至少之前没有报告过它。
我已将其添加到amsthm
错误列表中...
答案2
调整(来自纯 TeX)的定义\*
,您可以制作一个可以使用连字符连接的箭头\discretionary{}{}{}
。
\def\brkarrow{\discretionary{\enspace\the\textfont2\char33}{}{}}
\begin{definition}
[$ABC \rightarrow DEF \rightarrow GHI \rightarrow JKL \brkarrow MNO \rightarrow PQR$]
Here's some text that runs over onto the next line, to show the overrun.
\end{definition}
您不能将数学放在自由选择符内,但可以使用数学字体中的字符。在本例中,我们使用数学符号字体中的字符编号 33。(参见 TeX Book 的附录 F)。但这样做的问题是,如果没有中断,则不会产生任何结果,因为 a 的第三部分discretionary
在数学模式下必须为空白。因此,您不妨\allowbreak
在适当的位置放入 an。
\begin{definition}
[$ABC \rightarrow DEF \rightarrow GHI \rightarrow JKL \rightarrow \allowbreak MNO \rightarrow PQR$]
Here's some text that runs over onto the next line, to show the overrun.
\end{definition}
要么可以得到这个
但第二种可能更简单,您可以\allowbreak
随意输入。或者甚至可以定义一个微小的宏来扩展\rightarrow\allowbreak
。