使用 gb4e 更改示例编号

使用 gb4e 更改示例编号

我想更改gb4e一小部分文本的默认行为。我对一个示例进行了一系列修改,我想将它们标记为子示例。例如:

(3a)啦啦啦

但(3a)是有问题的,可以改进:

(3b)精致的等等

这个例子被“提炼”了大约六次。

第一个 MWE:

\documentclass{article}
\usepackage{gb4e}
\begin{document}
\begin{exe}
    \ex\label{ex:1} Blah
    \ex\label{ex:2} Blah
    \ex\label{ex:3a} Blah blah
\end{exe}

But (\ref{ex:3a}) is problematic and can be refined:
\begin{exe}
    \ex\label{ex:3b} Refined blah blah
\end{exe}

\end{document}

当我尝试使用命令覆盖标签时gb4e\exi交叉引用变得混乱:

\documentclass{article}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex\label{ex:1} Blah
\ex\label{ex:2} Blah
\exi{(3a)}\label{ex:3a} Blah blah
\end{exe}

But (\ref{ex:3a}) is problematic and can be refined:
\begin{exe}
    \exi{(3b)}\label{ex:3b} Refined blah blah
\end{exe}
\setcounter{exx}{3}
\end{document}

它不打印“(3a)”,而是打印“(2)”。

我该如何以尊重计数器并正确交叉引用的方式实现我所寻找的内容?

答案1

这是实现此目的的一种方法。我定义了一个\exs宏,其工作方式与顶层宏相同,\ex只是它添加了一个阿拉伯语子示例。完成一系列子示例后,您必须使用\finsub重置下一个常规(或子)示例的计数器。

\documentclass{article}
\usepackage{gb4e}
\newcounter{mysub}
\makeatletter
\newcommand{\finsub}{\setcounter{mysub}{0}\stepcounter{exx}}
\newcommand{\exs}{\save@counters\refstepcounter{mysub}\renewcommand{\thexnumi}{\arabic{xnumi}\alph{mysub}}\@ifnextchar [{\@ex}{\item}\reset@counters}
\makeatother
\begin{document}

\begin{exe}
\ex Example 1 \label{ex:1}
\ex Example 2 \label{ex:2}
\exs Example 3a \label{ex:3a}
\end{exe}

But (\ref{ex:3a}) is problematic and can be refined:
\begin{exe}
    \exs Refined example 3a\label{ex:3b} 
\end{exe}

And if we think that (\ref{ex:3b}) is problematic we can redefine it again.

\begin{exe}
   \exs{Redefined example 3a yet again}
\label{ex:3c}
\end{exe}
\finsub

\begin{exe}
\ex{ This example won't be redefined  }
\label{ex:4}
\end{exe}

The next examples are also going to be redefined
\begin{exe}
\exs{ Example 5a }
\label{ex:5a}
\end{exe}

\begin{exe}
\exs{ Example 5b }
\label{ex:5b}
\end{exe}

\end{document}

代码输出

相关内容