问题是环境中第二行中 g 的位置很奇怪align
。奇怪的是,\dot{}
-character 只有在后面跟着另一个字符时才会放错位置。我需要mathabx
一些符号的包,因此更希望有一个替代方案这个问题。没有 mathabx 一切都按预期工作。
\documentclass[10pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{mathtools}
\usepackage{mathabx}
\begin{document}
\begin{align*}
\widetilde{g\dot{g}}\\
\widetilde{\dot{g}g}
\end{align*}
\end{document}
答案1
问题与为什么使用 amsmath 时嵌套 \tilde 或 \breve 命令的参数会重新出现?这里看起来不太引人注目, 的效果mathabx
只是用 来产生它widetilde
。解决方案始终相同:
\documentclass[10pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{mathtools}
\usepackage{mathabx}
\newsavebox{\accentbox}
\newcommand{\compositeaccents}[2]{%
\sbox\accentbox{$#2$}#1{\usebox\accentbox}}
\begin{document}
\begin{align*}
\compositeaccents{\widetilde}{g\dot{g}}\\
\compositeaccents{\widetilde}{\dot{g}g}
\end{align*}
\end{document}
当然,你可以用任何你想要的名字来代替\compositeaccents
。
答案2
一个解决方法是先将表达式放在一个框中(将其合并到重新定义的中\widetilde
):
\documentclass[10pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{mathtools}
\usepackage{mathabx}
\newsavebox\tempbox
\let\svwidetilde\widetilde
\renewcommand\widetilde[1]{\sbox\tempbox{$#1$}\svwidetilde{\usebox{\tempbox}}}
\begin{document}
\begin{align*}
\widetilde{g\dot{g}}\\
\widetilde{\dot{g}g}
\end{align*}
\end{document}
或者,作为一种解决方法,可以使用scalerel
包来拉伸波浪号,并stackengine
使用包将其设置在表达式的顶部。
\documentclass[10pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{mathtools}
\usepackage{mathabx}
\usepackage{stackengine}
\stackMath
\usepackage{scalerel}
\begin{document}
\begin{align*}
\widetilde{g\dot{g}}\\
\stackon[0pt]{\dot{g}g}{\hstretch{1.4}{\sim}}\\
%\widetilde{\dot{g}g}
\end{align*}
\end{document}