词汇表 - \printglossaries 中每个单词的首字母加粗

词汇表 - \printglossaries 中每个单词的首字母加粗

我正在尝试使用词汇表包打印首字母缩略词列表。有人能告诉我如何在打印的词汇表中将每个单词的首字母加粗吗?下图说明了这一点。 在此处输入图片描述

就 MWE 而言(我知道这是完全错误的,但我认为我应该尝试包括一些尝试。我猜想 \printglossaries 在 \newacronym[key-val list]{label}{abbrv}{long} 中呈现参数的方式需要重新定义,但我不知道该怎么做)。...

\documentclass{article}
% Load the package with the acronym option
\usepackage[acronym,nomain]{glossaries}
% Generate the glossary
\makeglossaries
\begin{document}
\section*{Section with acronyms}
% Acronym definitions
\newacronym{utc}{UTC}{\textbf{C}oordinated Universal Time}
\newacronym{adt}{ADT}{Atlantic Daylight Time}
\newacronym{est}{EST}{Eastern Standard Time}
% Use the acronyms
\gls{utc} is 3 hours behind \gls{adt} and 10 hours ahead of \gls{est}.
\gls{utc} \gls{utc} 
%Print the glossary
\printglossaries
\small\hfill Created by http://texblog.org
\end{document}

答案1

glossaries捆绑包还提供mfirstuc包,它提供了命令\capitalisewords,将每个单词的首字母转换为大写。这可以进行调整,以便不是将字母转换为大写,而是将其变为粗体。可以创建一个新命令来执行此操作:

\newrobustcmd{\bffirst}[1]{{\let\mfirstucMakeUppercase\textbf\capitalisewords{#1}}}

额外的一对括号确保对的更改\mfirstucMakeUppercase仅产生局部影响。(这在诸如的命令中内部使用\Gls,因此恢复它很重要。)

然后可以定义一种新的缩写样式,将描述放入这个新的自定义\bffirst命令的参数中:

\newacronymstyle{bf-long-short}%
{%
  \GlsUseAcrEntryDispStyle{long-short}%
}%
{%
  \GlsUseAcrStyleDefs{long-short}%
  \renewcommand*{\GenericAcronymFields}{description={\bffirst{\the\glslongtok}}}%
}

在定义首字母缩略词之前,应该设置这种新样式:

\setacronymstyle{bf-long-short}

(如果您收到“未定义的控制序列”错误\newacronymstyle,那么您的glossaries太旧,需要更新。)请注意glossaries用户手册建议不要在document环境内定义条目因此我\newacronym在下面修改后的例子中进入了序言部分:

\documentclass{article}

% Load the package with the acronym option
\usepackage[acronym,nomain]{glossaries}
% Generate the glossary
\makeglossaries

\newrobustcmd{\bffirst}[1]{{\let\mfirstucMakeUppercase\textbf\capitalisewords{#1}}}

\newacronymstyle{bf-long-short}%
{%
  \GlsUseAcrEntryDispStyle{long-short}%
}%
{%
  \GlsUseAcrStyleDefs{long-short}%
  \renewcommand*{\GenericAcronymFields}{description={\bffirst{\the\glslongtok}}}%
}

\setacronymstyle{bf-long-short}

% Acronym definitions
\newacronym{utc}{UTC}{Coordinated Universal Time}
\newacronym{adt}{ADT}{Atlantic Daylight Time}
\newacronym{est}{EST}{Eastern Standard Time}


\begin{document}
\section*{Section with acronyms}

% Use the acronyms
\gls{utc} is 3 hours behind \gls{adt} and 10 hours ahead of
\gls{est}.
\gls{utc} \gls{utc} 

%Print the glossary
\printglossaries
\small\hfill Created by http://texblog.org
\end{document}

当在首字母缩略词列表中显示时,这会使描述中每个单词的首字母变为粗体,但不会改变正文中的正常行为。

编辑:

如果您另外加载mfirstuc-english包,\capitalisewords则会忽略“a”、“an”、“of”、“in”等词。(如果您mfirstuc-english.sty在文本编辑器中打开,您将看到哪些词是使用\MFUnocap.¹ 定义的)可以添加其他单词,例如,

\MFUnocap{as}

如果您从单词中间取出一个字母(而不是首字母),那么您将必须手动覆盖这种description情况:

\newacronym[description={E\textbf{x}tensible \textbf{M}arkup \textbf{L}anguage}]{XML}{XML}{Extensible Markup Language}

有关的更多信息\capitalisewords\MFUnocap有关和相关命令的mfirstuc用户手册它应该与glossaries用户手册位于同一目录中。


¹ 有争议的或与上下文相关的词(例如“up”)未包含在内,如果需要mfirstuc-english,则需要使用明确添加。\MFUnocap

相关内容