摆脱 cgloss4e 中的多余方框

摆脱 cgloss4e 中的多余方框

\twosent我注意到使用宏的注释cgloss4e在末尾有一个额外的幻像“单词”。我使用以下代码添加一个小规则,指示每个单词框的起始位置:

\documentclass{article}
\usepackage{linguex}
\usepackage{cgloss4e} % (loaded by linguex but added for clarity)
\begin{document}
\renewcommand*\eachwordone{\rule[-2pt]{2pt}{6pt}}
\renewcommand*\eachwordtwo{\rule[-2pt]{2pt}{6pt}}
\ex.
\gll    con heo \\
    animal  pig \\
\glt    `pig'   \par
\end{document}

在此处输入图片描述

尽管 的参数中只有两个单词,但还是出现了第三个单词框\gll。这个幻影单词框是不可取的,因为如果它单独出现在一行上,就会在注释行和意译之间造成不必要的垂直空间。可以通过将以下行插入上述代码的序言中来欣赏这种效果:

\usepackage[showframe,textwidth=1.2in]{geometry}

在此处输入图片描述

关于如何cgloss4e减少一个单词框,有什么想法吗?

答案1

\twosent通过以下调用创建两个包含第一行和第二行的垂直框\getwords

\getwords(\lineone,\eachwordone)#1 \\%
\getwords(\linetwo,\eachwordtwo)#2 \\%

\getwords使用以下参数上下文定义:

\gdef\getwords(#1,#2)#3 #4\

\getwords对in 的调用\twosent引入了一个空格,以防止用户在输入示例时在最后一个单词和换行符之间没有空格时 TeX 产生错误,即:

 \gll    con     heo\\
          animal  pig\\
          `pig'   \par

事实上,如果以这种方式输入,那么最后就不会创建空框。

在此处输入图片描述

因此,有两种方法可以解决此问题:

  1. 对所有示例进行编码,最后一个单词和换行符之间不要留空格。如果您的示例设置了空框,您将不会收到任何警告。
  2. \getwords从对in的调用中删除“安全”空格\twosent\threesent如果\glll使用了 )。您永远不会在末尾得到空框,但如果您在换行符之前没有空格,TeX 会发出警告。此​​外,如果最后一个单词以控制序列结尾,则应将控制序列括起来,以免忽略后面的空格。

相关内容