如何使用直线标记方程中的项?

如何使用直线标记方程中的项?

Amsmath 和 mathtools 提供了两个宏来标记方程的项:

\documentclass{article}

\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amsfonts}

\newcommand{\E}[3][]{\mathbb{\operatorname{E}}_{#2}#1[#3#1]}
\newcommand{\KL}[2]{D_\mathrm{\operatorname{KL}}[#1\;\|\;#2]}

\begin{document}

\begin{align}
\underbrace{\E{q_\phi(\theta)}{\ln p(\mathcal{D}|\theta)}}_\text{expected likelihood}
-\underbrace{\KL{q_\phi(\theta)}{p(\theta)}}_\text{complexity} \\
\underbracket{\E{q_\phi(\theta)}{\ln p(\mathcal{D}|\theta)}}_\text{expected likelihood}
-\underbracket{\KL{q_\phi(\theta)}{p(\theta)}}_\text{complexity}
\end{align}

\end{document}

下支撑和下支架

我想获得这种行为,但括号或中括号只是一条粗直线。使用这些或其他包可以实现吗?

答案1

操纵<rule thickness><bracket height>

\underbracket[<rule thickness>][<bracket height>]{<arg>}

就足够了。请注意,我删除了\mathbb{...},简化了\mathrm{KL},并将其更改 \;\|\;为 \mathrel{\Vert}。您可能还想使用 \mid而 |不是 \ln p(\mathcal{D}|\theta)

\documentclass{article}

%\usepackage{amsmath}
\usepackage{mathtools}
%\usepackage{amsfonts}% not needed since I removed `\mathbb'

\newcommand{\E}[3][]{\operatorname{E}_{#2}#1[#3#1]}
\newcommand{\KL}[2]{D_{\mathrm{KL}}[#1\mathrel{\Vert}#2]}% Put `\mathrm{KL}' in braces. Thanks, @egreg!

\begin{document}

\begin{align}
\underbrace{\E{q_\phi(\theta)}{\ln p(\mathcal{D}|\theta)}}_\text{expected likelihood}
-\underbrace{\KL{q_\phi(\theta)}{p(\theta)}}_\text{complexity} \\
\underbracket{\E{q_\phi(\theta)}{\ln p(\mathcal{D}|\theta)}}_\text{expected likelihood}
-\underbracket{\KL{q_\phi(\theta)}{p(\theta)}}_\text{complexity} \\
\underbracket[0.27778ex][0pt]{\E{q_\phi(\theta)}{\ln p(\mathcal{D}|\theta)}}_\text{expected likelihood}
-\underbracket[0.27778ex][0pt]{\KL{q_\phi(\theta)}{p(\theta)}}_\text{complexity}
\end{align}

\end{document}

强调

我同意@StevenB.Segletes 的观点:这看起来相当令人困惑。你是在用“预期可能性”除以期望值,还是用“复杂性”除以信息/熵?即使规则很粗略,方程 (3) 中的表达式乍一看也像是(输入错误的)分数。

答案2

您还可以用其他方法来实现\underbracket

\documentclass{article}
\usepackage{mathtools}
\usepackage{amssymb}

\newcommand{\E}[3][]{\operatorname{\mathbb{E}}_{#2}#1[#3#1]}
\newcommand{\KL}[2]{D_{\mathrm{KL}}[#1\dmid#2]}
\newcommand{\dmid}{\parallel} % a semantic alias

\newcommand{\explain}[2]{{%
  \vtop{\offinterlineskip\halign{\hfil##\hfil\cr
    $\displaystyle{#1}$\cr
    \noalign{\vskip1pt\hrule height 1pt\vskip1pt}
    {\scriptsize\strut#2}\cr
  }}%
}}

\begin{document}

\begin{equation}
\explain{\E{q_\phi(\theta)}{\ln p(\mathcal{D}\mid\theta)}}
        {expected likelihood}
-\explain{\KL{q_\phi(\theta)}{p(\theta)}\vphantom{\E{q_\phi(\theta)}{}}}
         {complexity}
\end{equation}

\end{document}

\E我已经修复了have\operatorname和replaced的定义\mathbb。无需执行\mathrm{\operatorname{KL}},建议使用一对额外的括号:D_{\mathrm{KL}}是正确的。

A\vphantom会使下划线对齐。 应该|\mid

在此处输入图片描述

相关内容