我相信这个问题肯定已经有解决方案了,但我在网上找不到。
考虑下面的代码。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
a=\left.\kern-\nulldelimiterspace
p^{p^{p^{\cdot^{\cdot^{\cdot^p}}}}}\right\}\text{$n$-many $p$'s}
\end{equation*}
\end{document}
如何才能让花括号的高度等于迭代指数的高度,而无需任何手动计算或调整?
我希望 的基线a
和最低的基线p
对齐。在这种情况下, 的基线\text{$n$-many $p$'s}
不会与其他基线对齐,但此文本应按常规方式位于花括号的中间。
我相信一定有一个干净的解决方案,使用简单的 LaTeX,不需要像 TiKZ 这样复杂的软件包。
答案1
您可以垂直居中大表达式,以便可以\rbrace
准确覆盖它:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\left.\kern-\nulldelimiterspace
\begin{array}{@{}c@{}}
a=p^{p^{\scriptstyle p^{\cdot^{\cdot^{\cdot^{\scriptstyle p}}}}}}
\end{array}
\right\rbrace
\text{\scriptsize $n$-many $p$'s}
\end{equation*}
\end{document}
更强大的版本:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{xcoffins}
\NewCoffin{\repexpbasecoffin}
\NewCoffin{\repexptextcoffin}
\ExplSyntaxOn
\NewDocumentCommand{\repexp}{mom}
{
\wong_repexp:nnn { #1 } { #2 } { #3 }
}
\cs_new_protected:Nn \wong_repexp:nnn
{
\tl_set:Nf \l__wong_repexp_exp_tl { \tl_tail:n { #1 } }
\tl_if_novalue:nTF { #2 }
{
\tl_clear:N \l__wong_repexp_sub_tl
}
{
\tl_set:Nn \l__wong_repexp_sub_tl { #2 }
}
\tl_set:Nx \l__wong_repexp_base_tl
{
$
\tl_head:n { #1 }
\tl_map_function:NN \l__wong_repexp_exp_tl \__wong_repexp_exp:n
\prg_replicate:nn { \tl_count:N \l__wong_repexp_exp_tl } { \c_group_end_token }
\tl_if_empty:NF \l__wong_repexp_sub_tl
{
\tl_map_function:NN \l__wong_repexp_sub_tl \__wong_repexp_sub:n
\prg_replicate:nn { \tl_count:N \l__wong_repexp_exp_tl } { \c_group_end_token }
}
$
}
\SetHorizontalCoffin{\repexpbasecoffin}{\tl_use:N \l__wong_repexp_base_tl}
\SetHorizontalCoffin{\repexptextcoffin}
{
$
\left.\kern-\nulldelimiterspace
\vphantom{\begin{tabular}{c}\tl_use:N \l__wong_repexp_base_tl\end{tabular}}
\right\rbrace
\text{\scriptsize #3}
$
}
\JoinCoffins\repexpbasecoffin[r,vc]\repexptextcoffin[l,vc]
\TypesetCoffin\repexpbasecoffin
}
\cs_new:Nn \__wong_repexp_exp:n
{
\c_math_superscript_token \c_group_begin_token \scriptstyle
\str_if_eq:nnTF { . } { #1 } { \cdot } { \exp_not:n { #1 } }
}
\cs_new:Nn \__wong_repexp_sub:n
{
\c_math_subscript_token \c_group_begin_token \scriptstyle
\str_if_eq:nnTF { . } { #1 } { \cdot } { \exp_not:n { #1 } }
}
\ExplSyntaxOff
\begin{document}
\begin{gather}
\repexp{ppp...p}{$n$ many $p$'s}
\\
a=\repexp{ppp...p}{$n$ many $p$'s}
\\
\mathfrak{q}=\repexp{{\aleph_0}{\aleph_0}{\aleph_0}...{\aleph_0}}{$q$}
\\
\repexp{abcd...x}[bcd...x]{$n$ up, $m$ down}
\end{gather}
\end{document}
如您所见,大指数可以单独使用。语法也简化了:简单字母可以直接插入,复杂符号应括在括号中;句点代表\cdot
。
可选参数用于下标,请参阅最后的示例。