![自定义 gb4e 子示例(与交叉引用无关)](https://linux22.com/image/397937/%E8%87%AA%E5%AE%9A%E4%B9%89%20gb4e%20%E5%AD%90%E7%A4%BA%E4%BE%8B%EF%BC%88%E4%B8%8E%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E6%97%A0%E5%85%B3%EF%BC%89.png)
我正在使用 gb4e 来标记语义论文中的示例。这些示例带有特定的上下文,我想提一下,在这个特定的上下文中,至少有两个恰当的答案。我想要的是这样的:
(36)上下文:外面下着雨。
A:今天天气真好。-->而不是a。
B:是的,你是对的。-->而不是b。
B':是的,但是天气太热了。-->而不是 c。
B'':不,你错了。-->而不是d。
(这些子示例之间没有空格)
我理解通过使用其他包,例如语言我可以解决这个问题,但我想知道是否可以更改 gb4e 包中的任何设置以继续使用它。
非常感谢!
这是 MWE(如果格式看起来很糟糕请见谅):
\documentclass[12pt]{article}
\usepackage{gb4e}
\begin{exe}
\ex Context: It's raining outside.
\begin{xlist}
\ex[A:] It's a really nice weather today.
\ex[B:] Yes, you are right.
\ex[B':] Yes, but it is so hot.
\ex[B'':] No, you are wrong.
\end{xlist}
\end{exe}
\end{document}
答案1
如果您要经常这样做,我会创建一个修改版的命令,gb4e
\exi
以便正确排列所有内容。我将其称为\exk
,其对应\sn
版本为\snk
。这比重新定义\exi
自身更好。
\documentclass{article}
\usepackage{gb4e}
\makeatletter
\newcommand\exk[1]{\item[{\makebox[1.5em][l]{#1}}]\@ifnextchar [{\@exj}{}}
\newcommand\snk{\exk{}}
\makeatother
\begin{document}
\begin{exe}
\ex Context: It’s raining outside.
\begin{xlist}
\exk{A:}{It's a really nice weather today.}
\exk{B:}{Yes, you are right.}
\exk{B’:}{Yes, but it is so hot.}
\exk{B’’:}{No, you are wrong.}
\snk{Some example}
\end{xlist}
\end{exe}
\end{document}
答案2
为了提供自定义示例标识符,您可以使用\exi{<identifier>}
,如第 1.2 节(第 4 页)中所述gb4e 手册。标识符默认不左对齐,因此您可以考虑使用 B 0、 B 1、 B 2使它们具有相同的宽度(尽管在语言学中大多数人可能使用素数符号)。
梅威瑟:
\documentclass[12pt]{article}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex Context: It's raining outside.
\begin{xlist}
\exi{A:} It's a really nice weather today.
\exi{B:} Yes, you are right.
\exi{B':} Yes, but it is so hot.
\exi{B'':} No, you are wrong.
\end{xlist}
\end{exe}
\end{document}
结果: