\middle 后的下标位置太高

\middle 后的下标位置太高

我有这个代码:

\left [ 1 - \frac{ \sum_{1}^{n}\left ( \frac {\sum\left ( P(O_k)) \right )}
{\sum R_j} \middle|_i \times C_i \right )}{CT}  \right ] \times 100

这给了我这个输出:

在此处输入图片描述

但我希望它如下:

在此处输入图片描述

答案1

\middle基本上就像一个结束符\right,后面紧跟着一个 new \left,所以这里的下标不能正常工作。不过,你可以改用手动调整中间栏的大小:

\documentclass{article}

\usepackage{amsmath}

\begin{document}
\[
\left [ 1 - \frac{ \sum_{1}^{n}\left( \frac {\sum\left ( P(O_k) \right )}
{\sum R_j} \biggm|_i \times C_i \right)}{CT}  \right ] \times 100
\]
\end{document}

在此处输入图片描述

另一个版本的使用\biggl( ... \Bigm|_i ... \biggr)会给出一个稍微小一点的条,如原始图像中所示:

在此处输入图片描述

答案2

以下示例用 和 替换 ,\middle\right获得\left相同\vphantom的大小。该示例还删除了可能多余的一层括号。

第一行用于\middle比较。第三行添加求和变量的猜测。

\documentclass{article}
\newcommand*{\LeftMiddleIndexRight}[6]{%
  \left#1#2\vphantom{#5}\right#3_{#4}\kern-\nulldelimiterspace
  \left.#5\vphantom{#2}\right#6%
}
\begin{document}
\[
\left [ 1 - \frac{ \sum_{1}^{n}\left ( \frac {\sum P(O_k))}
{\sum R_j} \middle|_i \times C_i \right )}{CT}  \right ] \times 100
\]
\[
  \left [
    1 - \frac{
      \sum_{1}^{n}
      \LeftMiddleIndexRight
      (
        {\frac {\sum P(O_k))}{\sum R_j}}
      |{i}
        {\!{}\times C_i}
      )
    }{CT}
  \right ]
  \times 100
\]
\[
  \left [
    1 - \frac{
      \sum\limits_{i=1}^{n}
      \LeftMiddleIndexRight
      (
        {\frac {\sum_k P(O_k))}{\sum_j R_j}}
      |{i}
        {\!{}\times C_i}
      )
    }{CT}
  \right ]
  \times 100
\]
\end{document}

结果

评论:

  • \left<delimiter>并且\middle<delimiter>不支持下标。

  • 在原始情况下,索引作用于一个空原子,该空原子作为二元运算符的左操作数\times。因此,TeX 在 周围添加了一个水平空格\times。在 内部\LeftMiddleIndexRight,索引被放置在前一个关闭的原子上。然后紧随其后的是一个打开的不可见原子,\times其左侧没有操作数,因此失去了二元运算符属性。因此{}在左侧插入了一个显式空原子。 \!出于美观原因,稍微减少了运算符左侧的空间。

答案3

这可以在几个方面得到改进,但这是一个起点:

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\usepackage{mleftright}

\NewDocumentCommand{\COND}{>{\SplitArgument{1}{\given}}m}{\doCOND#1}
\NewDocumentCommand{\doCOND}{mm}{%
  \IfNoValueTF{#2}
   {\mleft(#1\mright)}
   {\mleft(#1\vphantom{{}#2}\;\mright|\maybesubscript#2
    \mleft.\kern-\nulldelimiterspace\vphantom{#1{}#2}\mright)}%
}
\NewDocumentCommand{\maybesubscript}{k_}{%
  \IfValueT{#1}{_#1}\;%
}
\begin{document}

\[
\COND{
  \frac {\sum P(O_k)}{\sum R_j}
   \given_i \times C_i
}
\]
\[
\mleft[1-\frac{1}{CT}\mleft(\sum_{i=1}^n
  \COND{\frac {\sum P(O_k)}{\sum R_j} \given_i \times C_i}
\mright)\mright]\times 100
\]

\end{document}

在此处输入图片描述

答案4

这个问题引发了一场有趣、熟练且有价值的头脑风暴(真的没有讽刺的意思!),关于如何在\middle分隔符上添加下标;但我想知道这个公式的预期语义是否不能是类似于以下内容的:

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

\usepackage{amsmath}
% \usepackage{mleftright}

\newcommand*{\ShowLists}{%
    \begingroup
        \showboxbreadth = 10000
        \showboxdepth = 100
        \tracingonline = 1
        \showlists
    \endgroup
}



\begin{document}

The formula:
\[
    \left[
        1 - \frac
            {
                \sum_{1}^{n} \Biggl(
                    \left.
                        \frac
                            {\sum \bigl(P(O_{k})\bigr)}
                            {\sum R_{j}}
                    \right|_{i}
                    \times C_{i}
                \Biggr)
            }
            {CT}
    \right]
    \times 100
    % \ShowLists
\]

\end{document}

也就是说,内部分数的右侧有一个“求值”式的竖线,用作\times二元运算符的第一个操作数。在这种情况下,构造生成的内部原子\left. ... \right|完全适合上下文,因为它会将_{i}下标附加到它上面。

如果你比较上述代码输出中的间距

代码输出

并且,在原发帖者在问题中附上的图片中,他/她想要达到的结果在我看来比在其他答案中更加一致。

相关内容