我有许多三角函数的幂,它们的参数通常不同于t
\sin^2{\frac{2\pi}{T}t}
例如
现在,我想将参数放在括号中,我知道我可以使用
\sin^2{\left(\frac{2\pi}{T}t\right)}
但我想自动获得它。
现在,我尝试用参数重新定义符号,如下所示https://tex.stackexchange.com/a/35646/106445
但当我尝试添加电源时,出现两个错误:Missing { inserted
和Missing } inserted
。我认为这是因为它需要参数,而我却添加了电源。有什么解决方法吗?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\newcommand*{\redefinesymbolwitharg}[1]{%
\expandafter\newcommand\csname ltx#1\endcsname{}%
\expandafter\let\csname ltx#1\expandafter\endcsname\csname #1\endcsname
\expandafter\renewcommand\csname #1\endcsname[1]{%
\csname ltx#1\endcsname\left(##1\right)%
}%
}
\redefinesymbolwitharg{cos}
\begin{document}
\[\cos{2x}\]
\[\cos^2{2x}\]
\end{document}
第一个没有问题,但是一旦我像平常一样添加正方形,它就会断裂
答案1
我的建议是不是引入自动括号,当然不会引入 产生的自动缩放括号\left...\right
。就我个人而言,我发现\cos(x)
比 更清晰\cos{x}
,而且你真的没有节省击键次数(而且括号毫无意义,因为它\cos
不带参数)。至于\left
/ \right
,有足够的例子在这个网站上,我们可以解释为什么过度使用它们往往会产生相当糟糕的后果。
话虽如此,以下代码(在任何情况下都不应使用:-)
)可能会按预期工作:
\documentclass{article}
\makeatletter
\newcommand*{\redefinesymbolwitharg}[1]{%
\expandafter\let\csname ltx#1\expandafter\endcsname\csname #1\endcsname
\@namedef{#1}{\@ifnextchar{^}{\@nameuse{#1@}}{\@nameuse{#1@}^{}}}%
\expandafter\def\csname #1@\endcsname^##1##2{%
\csname ltx#1\endcsname\ifx!##1!\else^{##1}\fi\mathopen{}\mathclose\bgroup\left(##2\aftergroup\egroup\right)
}%
}
\makeatother
\begin{document}
\[
\cos{x} \quad \cos{\frac1x} \quad \cos^2{y} \quad \sin^{2\alpha+1}\theta
\]
\redefinesymbolwitharg{cos}
\redefinesymbolwitharg{sin}
\[
\cos{x} \quad \cos{\frac1x} \quad \cos^2{y} \quad \sin^{2\alpha+1}\theta
\]
\end{document}