我正在努力学习 LaTeX仪表用于注释古典诗歌的软件包。当我尝试使用省略号时
\itie
预期行为是“Libatum agricolae”,其中第一个单词末尾的“m”与下一个单词开头的“a”相符。
\documentclass[12pt]{article}
\usepackage[en]{metre}
\begin{document}
\textbf{1st problem:}\par
\vspace{10}
Libatu\itie{m a}gricolae\par
\vspace{10}
Libatu\tie{m a}gricolae\par
\end{document}
当我写出米并用“\m4”放大符号时观察到了相同的行为。
\documentclass[12pt]{article}
\usepackage[en]{metre}
\begin{document}
\textbf{2nd problem:}\par
\vspace{10}
\metra[\m4]{\M\bbm\v\M\bbm\v\M\bbm\v\M\bbm\v\M\b\b\v\M\a}
\end{document}
有人知道如何修复这个显然不太明显的软件包的这种行为吗?编译器 pdfLatex 和 Xetex 都可以编译这个示例。
答案1
该包内部metre
使用包\relsize
中的命令relsize
循环遍历所有可能的字体大小,以计算领带的大小。
为了确保字体一开始尽可能小,\relsize{-10}
使用命令,即以 10 步减小字体大小。对于默认字体大小,这通常会触发警告,因为比正常大小小 10 步是不可用的。在包中,通过重新定义为(即不打印任何内容)来metre
抑制此警告。\rs@size@warning
\relax
但是,自从metre
编写以来(2001 年),的语法\rs@size@warning
已经发生了变化,现在有三个参数,而不是两个参数。最初的重新定义为\renewcommand{\rs@size@warning}[2]{\relax}
,因此它将命令从三个参数(在relsize
源代码中)更改为两个参数。但是,当警告实际上由调用时relsize
,会提供三个参数,第三个参数是使用的字体大小,而不是请求的大小。重新定义的命令采用前两个参数,执行\relax
,然后 LaTeX 处理第三个参数,现在它只是一个要打印的标记。
要修复此问题,您可以提供一个带有三个参数的新重新定义。因为警告命令包含@
您需要使用的符号\makeatletter
以及\makeatother
重新定义之前和之后的符号。
梅威瑟:
\documentclass[12pt]{article}
\usepackage{metre}
\makeatletter
\renewcommand{\rs@size@warning}[3]{\relax}
\makeatother
\begin{document}
\textbf{1st problem:}\par
Libatu\itie{m a}gricolae
\vspace{10pt}
Libatu\tie{m a}gricolae\par
\end{document}
结果: