这是对该问题(和答案)的后续这里。
我和 OP 有同样的问题,我无法在文本中括号内的示例数字周围使用括号。与 OP 不同,我也有对子示例的引用。我尝试使用原始代码:
\documentclass{minimal}
\usepackage{linguex}
\newif\ifparens\parensfalse
\renewcommand{\theExNo}{\protect\theExLBr\arabic{ExNo}\protect\theExRBr}
\renewcommand\theExLBr{\ifparens\else(\fi}
\renewcommand\theExRBr{\ifparens\else)\fi}
\newcommand\pref[1]{{\parenstrue\ref{#1}}}
\begin{document}
\ex. \label{ex:1} \a. \label{ex:2}Look, an example!
\b. \label{ex:3}And there's another one!
%\pref{ex:1},
\pref{ex:2}, \pref{ex:3},
\ref{ex:1}, \ref{ex:2}, \ref{ex:3}
\end{document}
我得到这个输出:
如您所见,\pref{}
如果涉及子级,该命令仍会保留数字周围的括号,此外,它还会引入一个带有较大垂直空间的换行符。如果我在下面注释掉,换行符就会消失\pref{ex:1}
,但括号会保留。
我一直无法弄清楚如何才能使其\pref{}
完全通用,以便它适用于任何级别的交叉引用。有办法吗?
我知道我可以对完整示例进行交叉引用,并手动添加对子示例的引用(如\pref{ex:1}a
),但这会破坏链接,我想避免这种情况。否则,我可能会完全重新定义开括号和闭括号(如对 OP 的回答中所建议的那样),然后将其用于\eqref{}
正常情况,并保留\ref{}
用于括号中的出现。但是,对于彩色链接和超链接,括号显然不是链接的一部分——这也是我想避免的。
答案1
对于一般解决方案,在定义之前,还需要重新定义两个变量\theSubExNo
和。\theSubSubExNo
\pref{}
唯一需要做的更改是保护变量\theExLBr
和\theExRBr
。作为参考,这里是 MWE:
\documentclass{article}
\usepackage{linguex}
\makeatletter
\newif\ifparens\parensfalse
\renewcommand{\theExNo}{\protect\theExLBr\arabic{ExNo}\protect\theExRBr}
\renewcommand\theExLBr{\ifparens\else(\fi}
\renewcommand\theExRBr{\ifparens\else)\fi}
\renewcommand{\theSubExNo}{%
\hbox{\if@noftnote\protect\theExLBr\Exarabic{ExNo}\firstrefdash
\Exalph{SubExNo}\protect\theExRBr
\else
\protect\theFnExLBr\Exroman{FnExNo}\firstrefdash%
\Exalph{SubExNo}\protect\theFnExRBr
\fi}}
\renewcommand{\theSubSubExNo}{%
\hbox{\if@noftnote\protect\theExLBr%
\Exarabic{ExNo}\firstrefdash\Exalph{SubExNo}\secondrefdash
\Exroman{SubSubExNo}\protect\theExRBr%
\else\protect\theFnExLBr\Exroman{FnExNo}\firstrefdash
\Exalph{SubExNo}\secondrefdash\Exarabic{SubSubExNo}\protect\theFnExRBr\fi}}%
\makeatother
\newcommand\pref[1]{{\parenstrue\ref{#1}}}
\begin{document}
\ex. \label{ex:1} \a. \label{ex:2}Look, an example!
\b. \label{ex:3}And there's another one!
This is the solution (look at the total absence of parentheses in \pref{ex:1}, \pref{ex:2}, and \pref{ex:3})!
And here are the normal references: \ref{ex:1}, \ref{ex:2}, and \ref{ex:3}.
\end{document}
输出如下:
编辑:将minimal
类别更改为article
Alan Munn 所建议的。