我使用该gb4e
包作为语法示例。例如:
\begin{exe}
\ex It is scary PRO to be near dogs.
\end{exe}
它在 PDF 中自动显示为句子 1。我该如何将其显示为句子 5、句子 6 或句子 100?
答案1
该gb4e
包有多种引入不同示例编号的方法,根据实际需要,您可能需要使用不同的方法。此外,还有两个计数器控制示例的主要编号,但用途略有不同,并且设置在环境内部或外部exe
。在本回答中,我将尝试涵盖所有这些内容。
主要示例数字计数器:exx
和xnumi
主要示例编号由两个相关计数器控制:exx
和xnumi
。exx
计数器必须在环境之外设置{exe}
,但xnumi
计数器必须在环境内部设置{exe}
。因此,它们不能互换使用。
因此,对于您的问题的最基本答案有两个,两个答案都很好,但在我看来,其中一个在概念上更有吸引力。
您可以设置exx
计数器外部环境{exe}
:
\setcounter{exx}{<value>}
\begin{exe}
\ex An example numbered <value>
\end{exe}
或者你可以设置xnumi
计数器里面环境exe
:
\begin{exe}
\setcounter{xnumi}{<value>}
\ex An example numbered <value>
\end{exe}
这是一个完整的例子:
\documentclass{article}
\usepackage{gb4e}
\begin{document}
\setcounter{exx}{4}
\begin{exe}
\ex This will be example 5
\end{exe}
\begin{exe}
\setcounter{xnumi}{9}
\ex This will be example 10
\end{exe}
\end{document}
从外延上讲,这两种解决方案是相同的,但我认为第一种方法在概念上更合理,原因如下。显示语言示例的典型方式是将主数字放在括号中,如果有子示例,则使用小写字母枚举。对于源代码中的语义标记,这意味着环境{exe}
应该恰好对应于一个编号示例,并使用环境引入子示例{xlist}
。
因此,最好这样做:
\begin{exe}
\ex One
\ex Two
\ex Three
\end{exe}
这将产生(1)(2)和(3),最好使用三个独立的{exe}
环境。
\begin{exe}
\ex One
\end{exe}
\begin{exe}
\ex Two
\end{exe}
etc.
这更好地反映了语义标记,也使得移动示例或用文本拆分示例变得更加简单。
因此,控制{exe}
其外部环境的编号是有意义的,所以使用计数器exx
比使用计数器更可取xnumi
。
此外,如果您需要重置文档中示例的编号,则需要使用计数器exx
。
何时exx
必须使用
如果您出于任何原因需要重置文档中的示例编号, exx
请计数器必须使用。
beamer
重置覆盖上的示例数字
当使用beamer
类时,Beamer 中的覆盖图会创建多个页面,因此除非您告诉 Beamer 重置它们,否则您的示例数字将在每个覆盖图上递增。重置计数器的命令是\resetcounteronoverlay
,并且此命令必须使用exx
中的计数器gb4e
而不是xlisti
计数器。
\documentclass{beamer}
\usepackage{gb4e}
\resetcounteronoverlays{exx} % using xnumi here will not work
\begin{document}
\begin{frame}
\frametitle{A frame}
\begin{exe}
\ex An example\pause
\ex An example\pause
\ex An example
\end{exe}
\end{frame}
\end{document}
重置每个部分或章节的示例数量
如果您希望每个章节或部分都有示例数字,则必须使计数器exx
依赖于chapter
或section
计数器。但是,如果您想更改计数器本身的格式,则必须重新定义\thexnumi
。为此,最简单的方法是使用chngcntr
包:
\documentclass{article}
\usepackage{chngcntr}
\usepackage{gb4e}
\counterwithin{exx}{section} % reset example numbers per section
\renewcommand{\thexnumi}{\thesection.\arabic{xnumi}} % change format of number
\begin{document}
\section{Section one}
\begin{exe}
\ex An example
\end{exe}
\section{Section two}
\begin{exe}
\ex Another example
\end{exe}
\end{document}
更改示例数字的其他方法
更改主示例编号只是更改编号的方法之一。还有其他一些用途可能更适合您的用例。
引用其他来源的具体示例
如果您只想引用一个非常具体的数字(例如来自其他人文章的数字),您可以使用以下语法:
\begin{exe}
\exi{(20)} An example.
\end{exe}
这样,您就根本不需要弄乱主要示例的编号。
重复一个例子
如果您想在文本中重复示例,
\exr{<label>}
则可以使用。这比手动重置数字更可取。
\documentclass{article}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex This is an example.\label{Ex11}
\end{exe}
\begin{exe}
\ex This is a second example.
\end{exe}
\begin{exe}
\exr{Ex11} This is an (repeated) example.
\end{exe}
\end{document}
答案2
这是一个解决方案。使用\setcounter{xnumi}{<value>}
内部exe
环境。
\documentclass{report}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\setcounter{xnumi}{4}
\ex It is scary PRO to be near dogs.
\ex It is scary PRO to be near dogs.
\end{exe}
\begin{exe}
\setcounter{xnumi}{10}
\ex It is scary PRO to be near dogs.
\ex It is scary PRO to be near dogs.
\end{exe}
\begin{exe}
\setcounter{xnumi}{1}
\ex It is scary PRO to be near dogs.
\ex It is scary PRO to be near dogs.
\end{exe}
\end{document}