我正在使用三角形及其角作为输入来定义一个新函数,它适用于普通线性方程,但当它变成上标或下标时,参数就会错位。有什么建议可以解决这个问题吗? 代码:
\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\newcommand{\ca}[1]{\operatornamewithlimits{\mathpalette\cb{#1}}}
\newcommand{\cb}[2]{{%
\vphantom{\triangle}%
\ooalign{%
$#1\triangle$\cr\hidewidth\cc{$#1#2$}\hidewidth\cr
}%
}}
\newcommand{\cc}[1]{%
\raisebox{.2\height}{\scalebox{0.5}{#1}}%
}
\newcommand{\hypop}[4]{{\ _{#2}\ca{#4}^#1} _#3}
\begin{document}
\[Intended~output~above~and~below~the~sum:\hypop{a}{b}{c}{n}\]
\[Actual~output:\sum^{\hypop{a}{b}{c}{n}}_{\hypop{a}{b}{c}{n}}\]
\end{document}
答案1
一种用于处理数学样式大小变化的stackengine
方法。scalerel
修改后的答案
这可以很好地呈现在所有数学样式中,并纠正我的替代解决方案中的问题,即下标的下降不是统一的,而是取决于字母高度。对于此应用程序,这不是一个有用的功能。
\documentclass{article}
\usepackage{stackengine,scalerel}
\stackMath
\newcommand\hypop[4]{%
\ThisStyle{\litlet{#2}\stackengine{.2\LMex}{%
\stackengine{.2\LMex}{\SavedStyle\triangle}{\scalebox{.5}{$\SavedStyle#4$}}{O}{c}{F}{F}{L}%
}{\SavedStyle\litlet{#1}}{O}{c}{F}{F}{S}\litlet{#3}}%
}
\newcommand\litlet[1]{\raisebox{-.4\LMex}{\scalebox{.7}{$\SavedStyle#1$}}}
\begin{document}
\[
\hypop{a}{b}{c}{n} ~
\scriptstyle\hypop{a}{b}{c}{n}~
\scriptscriptstyle\hypop{a}{b}{c}{n}
\]
\[\sum^{\hypop{a}{b}{c}{n}}_{\hypop{a}{b}{c}{n}} \]
\end{document}
原始答案
三角形始终出现在 中\displaystyle
,而参数#4
始终出现在 中。然而,当用作下标时\scriptscriptstyle
,三角形的点字母(参数#1
- #3
)会变小。\hypop
\documentclass{article}
\usepackage{stackengine,scalerel}
\stackMath
\newcommand\hypop[4]{%
\ThisStyle{{}_{#2} \stackengine{1pt}{%
\stackengine{\dimexpr.72ex+.10\LMex}{\triangle}{_{_{\mkern2mu#4}}}{O}{c}{F}{F}{L}%
}{\SavedStyle_{#1}}{O}{c}{F}{F}{S} {}_{#3}}%
}
\begin{document}
\[Intended~output~above~and~below~the~sum:\hypop{a}{b}{c}{n}\]
\[Actual~output:\sum^{\hypop{a}{b}{c}{n}}_{\hypop{a}{b}{c}{n}} \]
\end{document}
我们可以保持三角形大小固定,但如果更喜欢较小的尺寸,那么\scalebox
可以使用,这里相对于上面的原始演示缩放了 80%:
\documentclass{article}
\usepackage{stackengine,scalerel}
\stackMath
\newcommand\hypop[4]{%
\ThisStyle{%
{}_{#2} \stackengine{1pt}{\scalebox{.8}{%
$\stackengine{\the\dimexpr.72ex+.10\LMex}{\triangle}{_{_{\mkern2mu#4}}}{O}{c}{F}{F}{L}$}%
}{\SavedStyle_{#1}}{O}{c}{F}{F}{S} {}_{#3}}%
}
\begin{document}
\[Intended~output~above~and~below~the~sum:\hypop{a}{b}{c}{n}\]
\[Actual~output:\sum^{\hypop{a}{b}{c}{n}}_{\hypop{a}{b}{c}{n}} \]
\end{document}
答案2
这是使用一些附加说明来放置字母“b”和“c”的\raisebox
版本\scalebox
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\newcommand{\ca}[1]{\operatornamewithlimits{\mathpalette\cb{#1}}}
\newcommand{\cb}[2]{{%
\vphantom{\triangle}%
\ooalign{$#1\triangle$\cr\hidewidth\cc{$#1#2$}\hidewidth\cr
}%
}}
\newcommand{\cc}[1]{%
\raisebox{.35\height}{\scalebox{0.45}{#1}}%
}
\newcommand{\hypop}[4]{%
\raisebox{-0.25ex}{\scalebox{0.5}{$#2$}}
\mkern-2.5mu
\ca{#4}\limits^{\mkern-0.5mu\scalebox{0.5}{$#1$}}
\mkern-2.8mu
\raisebox{-0.25ex}{\scalebox{0.5}{$#3$}}}
\begin{document}
Various math styles:
$ \hypop{a}{b}{c}{n} \quad
\scriptstyle \hypop{a}{b}{c}{n} \quad
\scriptscriptstyle \hypop{a}{b}{c}{n}$
With summation symbol:
$\displaystyle \sum^{\hypop{a}{b}{c}{n}}_{\hypop{a}{b}{c}{n}}$
\end{document}