我正在使用 vowel 包绘制我语言的口元音和鼻元音图表。中开元音和中闭元音之间存在中和,因为只有 ɛ̰ 和 ɔ̰。但在我的图表中,鼻元音图表中仍留有一条水平线,我的主管要求将其移除(我在图片上用黄色标出了要移除的线)。你能帮我吗?谢谢
以下是最简代码:
\documentclass[10pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\usepackage{vowel}
\begin{document}
\parbox{0.5\textwidth}{
\centering
\begin{center}
\begin{vowel}
\putcvowel{i}{1}
\putcvowel{u}{8}
\putcvowel{e}{2}
\putcvowel{ɛ}{3}
\putcvowel{a}{15}
\putcvowel{ɔ}{6}
\putcvowel{o}{7}
\end{vowel}
\end{center}
}
\parbox{0.5\textwidth}{
\centering
\begin{center}
\begin{vowel}
\putcvowel{ḭ}{1}
\putcvowel{ṵ}{8}
\putcvowel{ɛ̰}{3}
\putcvowel{a̰}{15}
\putcvowel{ɔ̰}{6}
\end{vowel}
\end{center}
}
\end{document}
答案1
在vowel
包中,负责绘制线条(除其他外)的宏是\@@vowel
。您可以从该宏中删除绘制不需要的线条的命令。
要轻松完成此操作,您可以使用包\patchcmd
中的宏etoolbox
。此命令可用于通过搜索和替换来修改现有宏。有五个参数:要修改的宏、搜索字符串、替换字符串以及两个分别在修补成功或失败时执行的参数。最后两个参数可以留空,并且替换字符串在这种情况下为空,因为您想删除某些内容。
要删除的线条绘制命令是\@vwldgmhline\c@rdhposii\vowelvunit
,意思是“以元音垂直单位测量卡片位置 2 上的元音图水平线”。因此补丁如下:
\makeatletter
\patchcmd{\@@vowel}{\@vwldgmhline\c@rdhposii\vowelvunit}{}{}{}
\makeatother
参数中有各种@
符号,因此需要用\makeatletter
和包围补丁\makeatother
。
当然,对于其他图表,您可能希望保留水平线。因此,您需要存储宏的原始定义,并在处理相关图表后恢复此定义。
MWE(请注意,我更改了字体,因为我没有 Times New Roman):
\documentclass[10pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{DejaVu Serif}
\usepackage{vowel}
\usepackage{etoolbox}
% store original definition of \@@vowel in \oldvowel
\makeatletter
\let\oldvowel\@@vowel
\makeatother
\begin{document}
\parbox{0.5\textwidth}{
\centering
\begin{center}
\begin{vowel}
\putcvowel{i}{1}
\putcvowel{u}{8}
\putcvowel{e}{2}
\putcvowel{ɛ}{3}
\putcvowel{a}{15}
\putcvowel{ɔ}{6}
\putcvowel{o}{7}
\end{vowel}
\end{center}
}
% remove line drawing command from \@@vowel
\makeatletter
\patchcmd{\@@vowel}{\@vwldgmhline\c@rdhposii\vowelvunit}{}{}{}
\makeatother
\parbox{0.5\textwidth}{
\centering
\begin{center}
\begin{vowel}
\putcvowel{ḭ}{1}
\putcvowel{ṵ}{8}
\putcvowel{ɛ̰}{3}
\putcvowel{a̰}{15}
\putcvowel{ɔ̰}{6}
\end{vowel}
\end{center}
}
% restore original definition for further diagrams
\makeatletter
\let\@@vowel\oldvowel
\makeatother
\end{document}
结果: