在表达式下用括号括起来而不修改其位置

在表达式下用括号括起来而不修改其位置

我想在数学表达式的一部分下画一个括号。我可以使用\braceB如下定义的命令来实现:

\documentclass[parskip]{scrartcl}

\usepackage{tikz}

\usetikzlibrary{decorations.pathreplacing} 
\usetikzlibrary{positioning} 

% Brace under an expression:
% #1: text of the expression
% #2: comment
\newcommand{\braceB}[3]{\begin{tikzpicture}
\node(expr){#1};\\
\draw[decorate, decoration={brace,amplitude=2mm,mirror,raise=-1mm}] (expr.south west) -- (expr.south east);
\node[below=1mm of expr] (textnode) {\mbox{#2}};
\end{tikzpicture}}

\begin{document}

$1+2+\braceB{3+4}{Text under 3+4}+5+6$

\end{document}

我对这个选项的问题是:

  1. 括号上方的文本(3+4)与数学表达式的其余部分(1+2+和+5+6)不对齐;
  2. 括号下的文本长度会将表达式的其余部分“推”到左侧或右侧。更准确地说,我想删除“1+2+”和“3”之间以及“4”和“+5+6”之间的水平空格。

你知道如何解决这两个问题吗?

答案1

如果你真的想在 Ti 中做到这一点Z,也许要在括号下添加一些绘图,作为起点,您必须使用它[baseline=(expr.base)]来让您的文本与文本正确对齐。然后是另一个问题,即包含在 tikzpicture 中的括号下的文本的长度。为了避免这种情况,您可以创建另一个 tikzpicture 来[remember picture,overlay]绘制括号下的文本节点。

文本中的下支撑节点

代码如下:

\documentclass[parskip]{scrartcl}

\usepackage{tikz}

\usetikzlibrary{decorations.pathreplacing} 
\usetikzlibrary{positioning} 

% Brace under an expression:
% #1: text of the expression
% #2: comment
\newcommand{\braceB}[2]{%
    \begin{tikzpicture}[baseline=(expr.base),remember picture]
    \node(expr){#1};\\
    \draw[decorate, decoration={brace,amplitude=2mm,mirror,raise=-1mm}] (expr.south west) -- (expr.south east);
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
    \node[below=1mm of expr] (textnode) {\mbox{#2}};
\end{tikzpicture}}

\begin{document}

$1+2+\braceB{$3+4$}{Very long text under 3+4} +5+6$

\end{document}

可能需要多次编译。

相关内容