排版有较长的限制

排版有较长的限制

长限制排版问题已在改进长限制和的排版但是,那里给出的答案使用了\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}

\mathclap 的演示。

或者,如果您想要更多空间,可以使用\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}

\mathmakebox 的演示。

相关内容