我使用该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 页显示的内容为:
第 2 页:
该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
,如果您使用多种类型的词汇表(或者一般来说,如果您更喜欢更清晰的代码),这可能会更好。