我尝试将长音符和短音符结合起来。这个帖子已经帮助我获得了一个良好的自适应长音符,并且 \u 命令产生了一个很好的短音符,但我在将它们结合起来时遇到了问题。
我怎样才能将它们干净地组合起来,或者——更好的是——我怎样才能画出像 \u 与 \supersmartmacron 长音符组合产生的短音符(见链接)?非常感谢你的帮助!
附言:我知道 tipa 包中的 \textbrevemacron,但它与 \usepackage{mathpazo} 结合起来很不好看。
编辑1
感谢 Alenanno,我找到了一种堆叠变音符号的好方法这个帖子:
\documentclass{article}
\usepackage{stackengine}
\begin{document}
\renewcommand\stacktype{L}
\stackon[3pt]{\={a}}{\u{}}
\end{document}
这样可以产生 \= 和 \u 变音符号的完美组合(使用选定的字体,而 \textbrevemacron 则不会 → “丑陋”——抱歉没有指出这一点),但:尤其是使用 \i 时,它会给出一个相当大的符号。这就是 \supersmartmacron 所做的,它创建一个长度取决于字符宽度的宏指令。有没有办法将 \u 缩小一点?
问题的 MWE:
\documentclass{article}
\usepackage{stackengine}
\begin{document}
\renewcommand\stacktype{L}
\stackon[1.5pt]{\={\i}}{\u{}}
\end{document}
谢谢你!
编辑2
使用 stackengine 解决方案的另一个问题是需要指定距离。上面的示例仅适用于 fontsize=12pt,对于更大或更小的符号,需要调整值。
答案1
您可能想要手动构建它:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{mathpazo}
\DeclareRobustCommand{\brevemacron}[1]{%
\leavevmode
\vbox{\offinterlineskip
\ialign{\hfil##\hfil\cr
\u{}\cr\noalign{\kern-1ex}
\={}\cr\noalign{\kern-1ex}
#1\cr
}%
}%
}
\begin{document}
\brevemacron{a}\u{a}\={a}
\brevemacron{a}\brevemacron{e}\brevemacron{\i}\brevemacron{o}\brevemacron{u}
\brevemacron{A}\brevemacron{E}\brevemacron{I}\brevemacron{O}\brevemacron{U}
\end{document}
答案2
将 egreg 的版本与自适应宏指令相结合:
\DeclareRobustCommand{\brevemacron}[1]{%
\settowidth{\tmpa}{#1}% width of letter
\leavevmode
\vbox{\offinterlineskip
\ialign{\hfil##\hfil\cr
\u{}\cr\noalign{\kern-1ex}% upper diacritic
\rule{0.6\tmpa}{0.05em}\cr\noalign{\kern0.1ex}% lower diacritic: a bar with the legth of 0.6 times the letter width and a thickness of 0.05em, 0.1ex above the character
#1\cr% character
}%
}%
}
可以使用 graphicx 包通过将相关行更改为来实现相对于字符宽度的上部变音符号的缩放
\resizebox{0.8\tmpa}{!}{\u{}}\cr\noalign{\kern-1.1\tmpa}% upper diacritic: \u with the width of 0.8 times the letter width
可以使用 xstring 包将短音符缩小到字母 \i,然后 \u 行显示为
\IfStrEq{#1}{\i}{\resizebox{0.8\tmpa}{!}{\u{}}\cr\noalign{\kern-1.1\tmpa}}{\u{}\cr\noalign{\kern-1ex}}% upper diacritic: scaled down \u just for \i