我正在使用linguex
并需要一个具有四层嵌入的编号列表。我希望能够为第四层嵌入设置自定义编号项目符号(标签),并能够在文本中无歧义地交叉引用它。下面的内容为我提供了四层嵌入,但不允许无歧义的标签和交叉引用。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{natbib}
\usepackage{linguex}
\begin{document}
\ex. Level one.\label{l1}
\a. Level 2.\label{l2}
\a. Level 3.\label{l3}
\a. Level 4.\label{l4}
\z.
\end{document}
答案1
这里尝试为 定义一个额外的级别linguex
。它似乎有效,但可能会产生意想不到的副作用,因此请谨慎测试。
linguex
这个想法是定义一个额外的计数器,它与最低级别的计数器绑定(即用其重置)SubSubExNo
。使用新定义的命令,该linguex
命令\a.
可以与打印(大写字母)和增加这个新计数器相结合。间距会稍微调整一下以\hskip
定位标签。另一个新命令的定义类似于\b.
。
交叉引用的标签是通过重新定义来设置的\@currentlabel
,如https://tex.stackexchange.com/a/292890/。此处的交叉引用由四级计数器Exno
、SubExNo
和SubSubExNo
新计数器组成SubSubSubExNo
。
代码:
\documentclass{article}
\usepackage{linguex}
\newcounter{SubSubSubExNo}[SubSubExNo]
\setcounter{SubSubSubExNo}{0}
\makeatletter
\newcommand{\lfourlabel}{%
\@bsphack%
\csname phantomsection\endcsname % in case hyperref is used
\def\@currentlabel{(\arabic{ExNo}-\alph{SubExNo}-\roman{SubSubExNo}-\Alph{SubSubSubExNo})}%
\@esphack%
}
\makeatother
\newcommand{\lvlfoura}{%
\a. \hskip -1em\stepcounter{SubSubSubExNo}\Alph{SubSubSubExNo}.\lfourlabel\hskip 1em%
}
\newcommand{\lvlfourb}{%
\b. \hskip -1em\stepcounter{SubSubSubExNo}\Alph{SubSubSubExNo}.\lfourlabel\hskip 1em%
}
\begin{document}
\ex. Level one.\label{l1}
\a. Level 2.\label{l2}
\a. Level 3.\label{l3}
\lvlfoura Level 4\label{l4}.
\lvlfourb Also level 4.
\z.
\b. Also level 3\label{l32}.
\lvlfoura Level 4.
\lvlfourb Also level 4\label{l42}.
\z.
See example \ref{l3} and \ref{l4} and higher level \ref{l32} and \ref{l42}.
\end{document}
结果: