\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
事实上,如果以这种方式输入,那么最后就不会创建空框。
因此,有两种方法可以解决此问题:
- 对所有示例进行编码,最后一个单词和换行符之间不要留空格。如果您的示例设置了空框,您将不会收到任何警告。
\getwords
从对in的调用中删除“安全”空格\twosent
(\threesent
如果\glll
使用了 )。您永远不会在末尾得到空框,但如果您在换行符之前没有空格,TeX 会发出警告。此外,如果最后一个单词以控制序列结尾,则应将控制序列括起来,以免忽略后面的空格。