引用选定的 linguex 示例而不使用括号

引用选定的 linguex 示例而不使用括号

如何在不使用括号的情况下引用选定的 linguex 示例编号?编辑希望我不要在文本中放在括号内的示例编号周围使用括号。就像以下示例一样:

\documentclass{minimal}
\usepackage{linguex}
   %\renewcommand{\theExLBr}{} %removes the left bracket in examples
   %\renewcommand{\theExRBr}{} %removes the right bracket in examples

\begin{document}

 \ex. example A\label{A}

 \ex. example B\label{B}

 \textbf{Required:} example in \ref{A} (and example in 2).\\
 \textbf{Unacceptable:} example in \ref{A} (and example in \ref{B}).

\end{document}

在此处输入图片描述

使用 \theExLBr & \theExRBr 命令(未在上面的 MWE 中选择)对其进行全局定义,并仅在 MWE 中为 (1) 等示例添加括号,这是一个非常不舒服的选择(手稿中有数百个像 (1) 这样的示例和几个像 2 这样的示例)。所以,我在考虑一种在选定示例周围抑制 () 的方法。我是否可以以某种方式对单个示例使用 \theExLBr & \theExRBr 命令(这基本上会给出所需的结果)或类似效果?该文件必须使用 XeLaTeX 生成。

答案1

由于 TeX 无法知道您是否在括号内,因此您需要一个新的命令来引用括号内的引用,该命令将“删除”多余的括号。我们将此命令称为\pref类似于\ref但不会在数字周围加上括号的命令。但由于添加东西比删除东西更容易,我们将重新定义\ExNoLBr\ExNoRBr有条件地添加括号。由于标签已写入文件.aux,我们需要保护这些命令不在那里扩展,以便条件可以在解析引用时发挥其魔力。

\documentclass{article}
\usepackage{linguex}
\newif\ifparens\parensfalse
\makeatletter
\renewcommand{\theExNo}{\protect\theExLBr\arabic{ExNo}\protect\theExRBr}
\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
\renewcommand\theExLBr{\ifparens\else(\fi}
\renewcommand\theExRBr{\ifparens\else)\fi}
\newcommand\pref[1]{{\parenstrue\ref{#1}}}

\begin{document}

 \ex. example A\label{A}

 \ex. example B\label{B}

 \textbf{Required:} example in \ref{A} (and example in 2).\\
      \textbf{Now acceptable:} example in \ref{A} (and example in \pref{B}). Subexamples \ref{A:sub} (like this one \pref{A:sub}) also work.


\end{document}

代码输出

相关内容