米包:\tie 和 \itie 打印数字

米包:\tie 和 \itie 打印数字

我正在努力学习 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}

结果:

在此处输入图片描述

相关内容