长限制排版问题已在改进长限制和的排版但是,那里给出的答案使用了\mathop
,如果不仅是限制,而且“操作数”很长,则不会产生令人满意的结果,如下面的 MWE 所示:
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\variables}{variables}
\DeclareMathOperator{\parentstate}{parentstate}
\DeclareMathOperator{\visible}{visible}
\newcommand*{\dotcup}{\mathbin{\dot{\cup}}}
\begin{document}
original:
\[
\visible(s) = \variables(s) \dotcup \dot{\bigcup_{p \in \parentstate^+(s)}} \variables(p)
\]
with \verb+\mathop+:
\[
\visible(s) = \variables(s) \dotcup \mathop{\dot{\bigcup} \variables(p)}_{p \in \parentstate^+(s)}
\]
\end{document}
这将产生以下内容:
我宁愿同时采用两种方法的优点,即不要将限制置于整体的中心\mathop
,而只置于运算符本身的中心,并在运算符的左侧留出一些空间(如第一个版本),但将操作数移近(如第二个版本)。
答案1
\smashoperator[r]
要在包前留有空间,但在包后没有空间,就可以使用mathtools
。当然,你必须确保你粉碎的是一个操作符:
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator{\variables}{variables}
\DeclareMathOperator{\parentstate}{parentstate}
\DeclareMathOperator{\visible}{visible}
\newcommand*{\dotcup}{\mathbin{\dot{\cup}}}
\begin{document}
\begin{equation*}
\visible(s) = \variables(s) \dotcup
\smashoperator[r]{\mathop{\dot{\bigcup}}_{p \in \parentstate^+(s)}}
\variables(p)
\end{equation*}
\end{document}
答案2
该mathtools
包提供了\mathclap
命令,它将减少下标的大小。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\DeclareMathOperator{\variables}{variables}
\DeclareMathOperator{\parentstate}{parentstate}
\DeclareMathOperator{\visible}{visible}
\newcommand*{\dotcup}{\mathbin{\dot{\cup}}}
\begin{document}
original:
\[
\visible(s) = \variables(s) \dotcup \dot{\bigcup_{p \in \parentstate^+(s)}} \variables(p)
\]
with \verb+\mathop+:
\[
\visible(s) = \variables(s) \dotcup \mathop{\dot{\bigcup} \variables(p)}_{p \in \parentstate^+(s)}
\]
with \verb+\mathclap+:
\[
\visible(s) = \variables(s) \dotcup \dot{\bigcup_{\mathclap{p \in \parentstate^+(s)}}} \variables(p)
\]
\end{document}
或者,如果您想要更多空间,可以使用\mathmakebox
。这允许您自定义下标的视在宽度。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\DeclareMathOperator{\variables}{variables}
\DeclareMathOperator{\parentstate}{parentstate}
\DeclareMathOperator{\visible}{visible}
\newcommand*{\dotcup}{\mathbin{\dot{\cup}}}
\begin{document}
original:
\[
\visible(s) = \variables(s) \dotcup \dot{\bigcup_{p \in \parentstate^+(s)}} \variables(p)
\]
with \verb+\mathop+:
\[
\visible(s) = \variables(s) \dotcup \mathop{\dot{\bigcup} \variables(p)}_{p \in \parentstate^+(s)}
\]
with \verb+\mathmakebox+:
\[
\visible(s) = \variables(s) \dotcup \dot{\bigcup_{\mathmakebox[1cm]{p \in \parentstate^+(s)}}} \variables(p)
\]
\end{document}