接着这个问题,我希望能够做到这一点,但使用积分符号。
建议的解决方案如下:
\newcommand{\opA}{\mathop{\vphantom{\sum}\mathchoice
{\vcenter{\hbox{\huge A}}}
{\vcenter{\hbox{\Large A}}}{\mathrm{A}}{\mathrm{A}}}\displaylimits}
我尝试将其修改为积分符号:
\newcommand{\integral}[2]{\mathop{\vphantom{\int}\mathchoice
{\huge\int #1 \, d#2}
{\Large\int #1 \, d#2}{\mathrm{A}}{\mathrm{A}}}\displaylimits}
\integral{x}{x}_0^1
例如,应用此方法可得到以下结果:
但是,这会将极限置于积分上方和下方的中心,而不是您希望它们位于左侧的位置。
所以我的问题是:如何将它们对齐到正确的位置?此外,\mathrm{A}
在上面显示的另外两种类型模式中,我应该写什么来代替?
谢谢!
答案1
简单但不灵活的答案
\def\integral#1#2_#3^#4{\int_{#3}^{#4}\mathopen{}#1\mathclose{}\mathop{}\!d#4\mathclose{}}
然后,您必须始终按照该顺序使用带有限制和的命令。因此,如果您不想要限制,则需要\integral{f(x)}{x}_{}^{}
。
更好的解决方案是xparse
,但我现在无法尝试它是否正常工作(如果有人检查并且它不起作用我会将其删除)。
\usepackage{xparse}
\NewDocumentCommand\integral{ m m e{_^} }{\integralaux{#1}{#2}#3}
\NewDocumentCommand\integralaux{mmmm}
{\int\IfValueT{#3}{_{#3}}\IfValueT{#4}{^{#4}}%
\mathopen{}#1\mathclose{}\mathop{}\!d#2\mathclose{}}
有了这个第二个版本,您可以灵活使用\integral{x}{x}
,,,,。\integral{x}{x}_{a}
\integral{x}{x}^{a}
\integral{x}{x}_{a}^{b}
\integral{x}{x}^{a}_{b}
另外,也可以使用\@ifnextchar
传统的 LaTeX 来完成此操作,并且已经在此网站上完成了。
答案2
您可能会做类似的事情,但请注意我给新命令赋予的名称。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse,relsize}
\NewDocumentCommand{\badint}{e{_^}}{%
\mathop{
\mathchoice
{\displaystyle\mathlarger{\mathlarger{\int_{\mathsmaller{\mathsmaller{#1}}}^{\mathsmaller{\mathsmaller{#2}}}}}}
{\textstyle\mathlarger{\int_{\mathsmaller{#1}}^{\mathsmaller{#2}}}}
{\scriptstyle\mathlarger{\int_{\mathsmaller{#1}}^{\mathsmaller{#2}}}}
{\scriptscriptstyle\mathlarger{\int_{\mathsmaller{#1}}^{\mathsmaller{#2}}}}
}
}
\begin{document}
\[
\badint_0^1 f(x)\,dx \ne \int_0^1 f(x)\,dx
\qquad
\textstyle
\badint_0^1 f(x)\,dx \ne \int_0^1 f(x)\,dx
\]
\end{document}
我发现输出真的很丑陋。