我正在尝试使用词汇表包打印首字母缩略词列表。有人能告诉我如何在打印的词汇表中将每个单词的首字母加粗吗?下图说明了这一点。
就 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