我使用 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
。总体来说,我认为csquotes
比quotmark
,但在这里我们可以劫持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
或由于重新定义了\glsentryfmt
in glossaries-extra
)。这实质上决定了条目是缩写(具有long
值)还是正常(或常规)条目。
glossaries
和都glossaries-extra
用于常规条目。这将使用第一次使用时的字段\glsgenentryfmt
值(或第一次使用时的字段,如果已使用)和后续使用时的字段值(或的字段)。由于显示字段的值,因此它与常规条目第一次使用时的值相同。first
firstplural
\glspl
text
plural
\glspl
\glsfirst
first
\gls
的默认定义\newacronym
也以这种方式运行,其中first
字段设置为\acrfullformat{
长的}{
短的}
但是这可能会造成混乱\Gls
(如果重新定义为首先显示简短形式)并且无法正确处理\acrfullformat
来自命令的最后一个可选参数的插入。\gls
这就是为什么定义缩写的新方法(使用\setacronymstyle
inglossaries
或\newabbreviation
in )在第一次使用时glossaries-extra
不使用键。这意味着像 这样的命令现在可以正常工作,但这意味着不再适合这些条目。相反,您可以使用像(with ) 或(with ) 这样的命令来显示完整形式。first
\gls
\Gls
\glsfirst
\acrfull
glossaries
\glsxtrfull
glossaries-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
已插入到长格式后面。