带词汇表的上下文相关括号

带词汇表的上下文相关括号

我使用 glossaries 包来处理我的首字母缩略词。第一次使用时,我希望以“长(短)”的形式打印首字母缩略词。但是,第一次使用首字母缩略词的文本可能已经嵌入括号中,例如以下示例中的第 2 项。

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}             % Umlaute
\usepackage[T1]{fontenc}

\usepackage[nomain,acronym,nonumberlist]{glossaries}

\makeglossaries
\newacronym{nemesis}{NEMESIS}{Netherlands Mental Health Survey and Incidence Study}

\begin{document}
\printglossaries

\section*{Dummy text}
\noindent \textbf{Everything is fine in a normal textenvironment:}\\
The \gls{nemesis} indicates something.\vspace{1cm}

\glsresetall

\noindent\textbf{If used first inside parentheses, the result looks ugly:}\\
Some studies' names (e.g. the \gls{nemesis}) make interesting acronyms.\vspace{1cm}

\noindent\textbf{This is what it should look like:}\\
Some studies' names (e.g. the Netherlands Mental Health Survey and Incidence Study [NEMESIS]) make interesting acronyms.

\end{document}

截屏

有什么方法可以让词汇表正确设置括号吗?

答案1

(首先,你需要一个可以在...)[...之间切换的命令]。这有点像由以下软件包提供的自动引用系统:csquotes。总体来说,我认为csquotesquotmark,但在这里我们可以劫持quotmark它并将其用作括号内容。这样,如果您碰巧需要,它就不会干扰csquotes。例如:

\documentclass{article}

\usepackage{quotmark}

\setquotemarks{{(}{)},{[}{]}}
\newcommand{\paren}[1]{\tqt{#1}}

\begin{document}
\paren{Some \paren{parenthetical} text}
\end{document}

得出的结果为:

(部分[括号内]文字)

现在,您无需明确使用(...),而是可以使用\paren{...}。 可能还有其他更简洁的方式来定义\param,但是一旦您确定了首选定义,就需要使用此命令的首字母缩略词样式。

最简单的方法是使用扩展包glossaries-extra,但请确保您拥有最新版本glossaries(至少 v4.23)和glossaries-extra(至少 v1.04):

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{quotmark}
\setquotemarks{{(}{)},{[}{]}}
\newcommand{\paren}[1]{\tqt{#1}}

\usepackage[nomain,acronym,nonumberlist,nopostdot=false]{glossaries-extra}

\makeglossaries

\setabbreviationstyle[acronym]{long-short-user}

\renewcommand*{\glsxtruserparen}[2]{%
  \glsxtrfullsep{#2}%
  \paren{#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}%
}


\newacronym{nemesis}{NEMESIS}{Netherlands Mental Health Survey and
Incidence Study}

\begin{document}

\printglossaries

\section*{Dummy text}
\noindent \textbf{Everything is fine in a normal textenvironment:}\\
The \gls{nemesis} indicates something.\vspace{1cm}

\glsresetall

\noindent\textbf{First use inside parentheses:}\\
Some studies' names \paren{e.g. the \gls{nemesis}} make interesting
acronyms.\vspace{1cm}

\noindent\textbf{Compare with:}\\
Some studies' names (e.g. the Netherlands Mental Health Survey and
Incidence Study [NEMESIS]) make interesting acronyms.

\end{document}

得出的结果为:

文件图像

如果只想使用glossaries没有扩展包的,那么您需要定义自定义样式:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{quotmark}
\setquotemarks{{(}{)},{[}{]}}
\newcommand{\paren}[1]{\tqt{#1}}

\usepackage[nomain,acronym,nonumberlist]{glossaries}

\makeglossaries        

\newacronymstyle{long-paren-short}%
{%
  \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
}%
{%
  \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
  \renewcommand*{\genacrfullformat}[2]{%
   \glsentrylong{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshort{##1}}}%
  }%
  \renewcommand*{\Genacrfullformat}[2]{%
   \Glsentrylong{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshort{##1}}}%
  }%
  \renewcommand*{\genplacrfullformat}[2]{%
   \glsentrylongpl{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshortpl{##1}}}%
  }%
  \renewcommand*{\Genplacrfullformat}[2]{%
   \Glsentrylongpl{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshortpl{##1}}}%
  }%
  \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
  \renewcommand*{\acronymsort}[2]{##1}%
  \renewcommand*{\acronymfont}[1]{##1}%
  \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
  \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
}

\setacronymstyle{long-paren-short}

\newacronym{nemesis}{NEMESIS}{Netherlands Mental Health Survey and
Incidence Study}

\begin{document}

\printglossaries

\section*{Dummy text}
\noindent \textbf{Everything is fine in a normal textenvironment:}\\
The \gls{nemesis} indicates something.\vspace{1cm}

\glsresetall

\noindent\textbf{First use inside parentheses:}\\
Some studies' names \paren{e.g. the \gls{nemesis}} make interesting
acronyms.\vspace{1cm}

\noindent\textbf{Compare with:}\\
Some studies' names (e.g. the Netherlands Mental Health Survey and
Incidence Study [NEMESIS]) make interesting acronyms.

\end{document}

这会产生相同的结果。

编辑:

当使用\newacronymstyle(或\newabbreviationstyle与) 时,使用和第一次使用glossaries-extra之间可能会有差异。这是由于以下行:\glsfirst\gls

  \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%

以首字母缩略词样式(带有glossaries或由于重新定义了\glsentryfmtin glossaries-extra)。这实质上决定了条目是缩写(具有long值)还是正常(或常规)条目。

glossaries和都glossaries-extra用于常规条目。这将使用第一次使用时的字段\glsgenentryfmt值(或第一次使用时的字段,如果已使用)和后续使用时的字段值(或的字段)。由于显示字段的值,因此它与常规条目第一次使用时的值相同。firstfirstplural\glspltextplural\glspl\glsfirstfirst\gls

的默认定义\newacronym也以这种方式运行,其中first字段设置为\acrfullformat{长的}{短的}但是这可能会造成混乱\Gls(如果重新定义为首先显示简短形式)并且无法正确处理\acrfullformat来自命令的最后一个可选参数的插入。\gls

这就是为什么定义缩写的新方法(使用\setacronymstyleinglossaries\newabbreviationin )在第一次使用时glossaries-extra不使用键。这意味着像 这样的命令现在可以正常工作,但这意味着不再适合这些条目。相反,您可以使用像(with ) 或(with ) 这样的命令来显示完整形式。first\gls\Gls\glsfirst\acrfullglossaries\glsxtrfullglossaries-extra

如果你确实想要,你可以修改样式来设置first键,如下面的修改后的示例:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{quotmark}
\setquotemarks{{(}{)},{[}{]}}
\newcommand{\paren}[1]{\tqt{#1}}

\usepackage[nomain,acronym,nonumberlist]{glossaries}

\makeglossaries        

\newacronymstyle{long-paren-short}%
{%
  \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
}%
{%
  \renewcommand*{\GenericAcronymFields}{%
    first={\the\glslongtok\space\protect\paren{\the\glsshorttok}},
    description={\the\glslongtok}}%
  \renewcommand*{\genacrfullformat}[2]{%
   \glsentrylong{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshort{##1}}}%
  }%
  \renewcommand*{\Genacrfullformat}[2]{%
   \Glsentrylong{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshort{##1}}}%
  }%
  \renewcommand*{\genplacrfullformat}[2]{%
   \glsentrylongpl{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshortpl{##1}}}%
  }%
  \renewcommand*{\Genplacrfullformat}[2]{%
   \Glsentrylongpl{##1}##2\space
   \paren{\protect\firstacronymfont{\glsentryshortpl{##1}}}%
  }%
  \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
  \renewcommand*{\acronymsort}[2]{##1}%
  \renewcommand*{\acronymfont}[1]{##1}%
  \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
  \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
}

\setacronymstyle{long-paren-short}

\newacronym{nemesis}{NEMESIS}{Netherlands Mental Health Survey and
Incidence Study}

\begin{document}

\printglossaries

The \glsfirst{nemesis}['s] findings show that\ldots

The \acrfull{nemesis}['s] findings show that\ldots

The \gls{nemesis}['s] findings show that\ldots

\end{document}

请注意可选参数处理的区别。

第一段与其他两段不同的文档图像

在 的情况下\glsfirst's只是附加在括号后面,看起来很奇怪,而对于另外两种情况,'s已插入到长格式后面。

相关内容