我想在数学表达式的一部分下画一个括号。我可以使用\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}
我对这个选项的问题是:
- 括号上方的文本(3+4)与数学表达式的其余部分(1+2+和+5+6)不对齐;
- 括号下的文本长度会将表达式的其余部分“推”到左侧或右侧。更准确地说,我想删除“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}
可能需要多次编译。