打印首字母缩略词列表时,将每个单词的首字母大写

打印首字母缩略词列表时,将每个单词的首字母大写

我使用该glossaries包,当我使用打印首字母缩略词时\printglossary[type=\acronymtype,title={List of Abbreviations}],我得到的部分输出如下所示。

在此处输入图片描述

我已在单独的文件中指定了首字母缩略词,如下所示:

\newacronym{brdf}{BRDF}{bidirectional reflectance distribution function}
\newacronym{cnn}{CNN}{convolutional neural network}
\newacronym{awgn}{AWGN}{additive white Gaussian noise}

打印时,有没有办法只将首字母缩略词列表中所有单词的首字母大写?(而在文本中则使用小写)

编辑:

例子

\documentclass[a4paper,oneside,12pt]{report}
% Abbreviations
\usepackage[acronym,style=super,nogroupskip,nonumberlist,toc]{glossaries}

\loadglsentries{def_abr} % file with acronyms
\makeglossaries

\begin{document} 
% abstract, toc, list of figures here
\renewcommand{\glsnamefont}[1]{\textbf{#1}}
\printglossary[type=\acronymtype,title={List of Abbreviations}]


\chapter*{Example Usage}
 \gls{brdf}, \gls{awgn}, \gls{psnr}, \gls{cnn}
% chapters
\end{document}

def_abr.tex文件:

\newacronym{brdf}{BRDF}{bidirectional reflectance distribution function}
\newacronym{cnn}{CNN}{convolutional neural network}
\newacronym{psnr}{PSNR}{peak-signal-to-noise ratio}
\newacronym{snr}{SNR}{signal to noise ratio}
\newacronym{awgn}{AWGN}{additive white Gaussian noise}

答案1

这是使用glossaries-extra(该包的扩展glossaries):

\documentclass[a4paper,oneside,12pt]{report}
% Abbreviations
\usepackage[acronym,style=super,nogroupskip,nonumberlist]{glossaries-extra}

\makeglossaries
\setabbreviationstyle[acronym]{long-short}
\loadglsentries{def_abr} % file with acronyms

\glssetcategoryattribute{acronym}{glossdesc}{title}

\begin{document} 
% abstract, toc, list of figures here
\renewcommand{\glsnamefont}[1]{\textbf{#1}}
\printglossary[type=\acronymtype,title={List of Abbreviations}]


\chapter*{Example Usage}
 \gls{brdf}, \gls{awgn}, \gls{psnr}, \gls{cnn}
% chapters
\end{document}

(我省略了该toc选项,因为它是的默认选项glossaries-extra)。

第 1 页显示的内容为:

缩写列表 AWGN 加性高斯白噪声 BRDF 双向反射分布函数 CNN 卷积神经网络 PSNR 峰值信噪比

第 2 页:

示例用法双向反射分布函数 (BRDF)、加性高斯白噪声 (AWGN)、峰值信噪比 (PSNR)、卷积神经网络 (CNN)

glossaries包会自动加载mfirstuc(最初是作为glossaries包的一部分开发的)。title属性用于\capitalisewords转换大小写。您可以使用\MFUhyphentrue和控制是否将单词的连字符部分大写\MFUhyphenfalse。默认为 false 设置,这就是为什么上面的“峰值信噪比”有“峰值信噪比”。

以下命令将其打开:

\documentclass[a4paper,oneside,12pt]{report}
% Abbreviations
\usepackage[acronym,style=super,nogroupskip,nonumberlist]{glossaries-extra}

\makeglossaries
\setabbreviationstyle[acronym]{long-short}
\loadglsentries{def_abr} % file with acronyms

\glssetcategoryattribute{acronym}{glossdesc}{title}
\MFUhyphentrue

\begin{document} 
% abstract, toc, list of figures here
\renewcommand{\glsnamefont}[1]{\textbf{#1}}
\printglossary[type=\acronymtype,title={List of Abbreviations}]


\chapter*{Example Usage}
 \gls{brdf}, \gls{awgn}, \gls{psnr}, \gls{cnn}
% chapters
\end{document}

得出的结果为:

缩写列表图片

为了防止“to”之类的词被更改,请使用mfirstuc-english包或设置例外\MFUnocap(例如\MFUnocap{to})。

答案2

您可以使用\titlecap来将缩写列表中每个单词的第一个字母大写。您甚至可以排除像 这样的单词的大写to。关键是打开 的含义以\titlecap打印词汇表,并在其他地方将其关闭。

我不是词汇表用户,但我确信有一种方法可以自动化该过程,这样就\titlecap不需要将宏添加到每个条目中。

\documentclass[a4paper,oneside,12pt]{report}
\usepackage{titlecaps}
\Addlcwords{to}
\usepackage{filecontents}
\begin{filecontents*}{glsfile}
\newacronym{brdf}{BRDF}{\titlecap{bidirectional reflectance distribution function}}
\newacronym{cnn}{CNN}{\titlecap{convolutional neural network}}
\newacronym{psnr}{PSNR}{\titlecap{peak-signal-\relax to-noise ratio}}
\newacronym{snr}{SNR}{\titlecap{signal to noise ratio}}
\newacronym{awgn}{AWGN}{\titlecap{additive white Gaussian noise}}
\end{filecontents*}
% Abbreviations
\usepackage[acronym,style=super,nogroupskip,nonumberlist,toc]{glossaries}

\loadglsentries{glsfile} % file with acronyms
\makenoidxglossaries
\begin{document} 
% abstract, toc, list of figures here
\renewcommand{\glsnamefont}[1]{\textbf{#1}}
\printnoidxglossary[type=\acronymtype,title={List of Abbreviations}]
\renewcommand\titlecap[1]{#1}

\chapter*{Example Usage}
 \gls{brdf}, \gls{awgn}, \gls{psnr}, \gls{cnn}, \gls{snr}
% chapters
\end{document}

在此处输入图片描述

在此处输入图片描述

答案3

一种可能的解决方案是重新定义\glossentry用于打印词汇表中条目的命令。在下面的 MWE 中,我使用了包\makefirstuc中的命令mfirstuc将条目的首字母变为大写。文本中的定义仍为小写。

代码不是很干净,但我不知道如何将命令\makefirstuc直接应用于\glossentrydesc命令或该命令的参数,所以我选择了与mfirstuc包手册中类似的构造。

编辑:仔细阅读后,OP 要求将所有单词大写。mfirstuc有一个命令(\capitalisewords),并且还有一个扩展的快捷方式(\ecapitalisewords)。

梅威瑟:

\documentclass[a4paper,oneside,12pt]{report}
% Abbreviations
\usepackage[acronym,style=super,nogroupskip,nonumberlist,toc]{glossaries}
\usepackage{mfirstuc}

\loadglsentries{def_abr} % file with acronyms
\makeglossaries

\begin{document} 
\gls{brdf}, \gls{awgn}, \gls{psnr}, \gls{cnn}

\renewcommand*{\glossentry}[2]{%  Change the displayed items
\glstarget{#1}{\glossentryname{#1}} %
& \ecapitalisewords{\glossentrydesc{#1}}% Description
\tabularnewline
}

\printglossary[type=\acronymtype,title={List of Abbreviations}]
\end{document}

结果:

在此处输入图片描述 资料来源:

词汇表:如何自定义带有单位附加列的符号列表?

有没有命令可以将首字母变为大写?

请注意,第一个问题\glossentry在上下文中重新定义glossarystyle,如果您使用多种类型的词汇表(或者一般来说,如果您更喜欢更清晰的代码),这可能会更好。

相关内容