我在排版(n 次方)勒让德符号时遇到了一些麻烦。我设置了命令
\newcommand{\Leg}[3][]{\left(\frac{#2}{#3}\right)_{#1}}
但是,当我输入例如
$$\Leg[3]{\pi}{\theta} = \Leg[3]{\theta}{\pi}$$
左边的符号比右边的符号小:
如果有人能建议一种方法来使符号大小相同,我将不胜感激。(无论是设置命令\Leg
使其始终输出相同大小的符号,还是每次使用时调整大小的临时方法\Leg
都很棒。)
答案1
您可以(并且应该)使用\genfrac
:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\genlegendre}[4]{%
\genfrac{(}{)}{}{#1}{#3}{#4}%
\if\relax\detokenize{#2}\relax\else_{\!#2}\fi
}
\newcommand{\legendre}[3][]{\genlegendre{}{#1}{#2}{#3}}
\newcommand{\dlegendre}[3][]{\genlegendre{0}{#1}{#2}{#3}}
\newcommand{\tlegendre}[3][]{\genlegendre{1}{#1}{#2}{#3}}
\begin{document}
We can use the Legendre symbol $\legendre{\pi}{\theta}$
\[
\legendre[3]{\pi}{\theta} = \legendre[3]{\theta}{\pi}
\]
We can also choose the size
\[
\frac{\dlegendre[2]{\pi}{\theta}+1}{3}
\]
\end{document}
命令\legendre
、\dlegendre
和作用与、和\tlegendre
相同。\frac
\dfrac
\tfrac
该\genfrac
命令有六个参数:
- 左分隔符(如果为空,则无分隔符);
- 右分隔符(如果为空,则无分隔符);
- 分数线的粗细(如果为空,则为标准粗细);
- 要使用的数学样式(如果为空,则使用当前样式);样式用 0(显示样式)、1(文本样式)、2(脚本样式)、3(scriptscript 样式)表示;
- 分子;
- 分母。
因此,我们通过传递不作为第四个参数来\legendre
从中获得,通过传递。\genlegendre
\genfrac
\dlegendre
0
这个\if\relax\detokenize{#1}\relax
诀窍是为了避免生成空下标\scriptspace
。
答案2
\mathstrut
带有以下包的解决方案mleftright
:
\documentclass{article}
\usepackage[utf8]{inputenc}%
\usepackage{mathtools}
\usepackage{mleftright}
\newcommand{\Leg}[3][]{\mleft(\frac{#2\mathstrut}{#3}\mright)_{\mkern-6mu#1}}
\begin{document}
\[ \Leg{\pi }{\sigma}\quad \Leg[3]{\pi }{\theta}\quad \Leg{\theta}{\pi} \]
\end{document}
答案3
我稍微改变了一下语法:现在可选参数是大小命令,索引是必需的。只需尝试一下您喜欢的大小即可。
您的命令的问题在于您自动应用自动大小调整(左和右),如果给出不同的输入(尤其是不同的大小),则不会产生相同的输出。
顺便说一句:您应该使用\[...\]
而不是$$
语法。
\documentclass{article}
\usepackage{amsmath}
\newcommand{\Leg}[4][big]{\csname #1l\endcsname(\frac{#3}{#4}\csname#1r\endcsname)_{#2}}
\begin{document}
\[
\Leg[Bigg]{3}{\pi}{\theta} = \Leg[Bigg]{3}{\theta}{\pi}
\]
\[
\Leg{3}{\pi}{\theta} = \Leg{3}{\theta}{\pi}
\]
\end{document}
答案4
这是允许您继续使用自动缩放的替代方案。它定义了一个\Legmatch
命令,并附加了两个伪参数。这些伪参数给出了另一个 Legendre 表达式,该表达式的大小应与该表达式相匹配。
在内部,它在成对的分隔符内插入一个\vphantom
框,该框的高度与另一个表达式的内容相同,宽度为零。
\documentclass[varwidth, preview]{standalone}
\usepackage{mathtools}
\usepackage{unicode-math}
\newcommand{\Legmatch}[5][]{\left(\vphantom{\frac{#4}{#5}}\frac{#2}{#3}\right)_{#1}}
\begin{document}
\[
\Legmatch[3]{\pi}{\theta^{\frac{\alpha^2}{2}}}{\theta}{\pi} =
\Legmatch[3]{\theta}{\pi}{\pi}{\theta^{\frac{\alpha^2}{2}}}
\]
\end{document}
我特别喜欢 Bernard 的答案,它使用了mleftright
。在某些特殊情况下,这个可能仍然有用,例如,如果您想分割线或在同一行上引入其他支柱。