我正在使用glossaries
pdfLaTeX 中的包。我正在尝试
在正文中使用小写字母缩写
和
对于索引,将词汇表中每个条目名称的首字母大写。
我已经尝试过四处寻找但找不到解决方案。
makeindex
为了获得词汇表,我运行了如下命令:
"/usr/texbin/makeglossaries" %
通常,我从 2 个外部文件加载条目,但我不认为这是问题所在,因为在运行 MWE 后我也遇到了同样的问题。无论如何,为了显示我正在使用的命令,我将它们作为注释插入到 MWE 中。
另外,我不确定这是否重要,但我使用 MinionPro 作为我的主要字体和 KOMA-Script。
我的 MWE 基于此线程: http://www.latex-community.org/forum/viewtopic.php?f=5&t=9966
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[toc=true,smallcaps,section,nonumberlist,acronym,nomain]{glossaries}
\newglossary{slg}{sym}{syb}{Nomenclature}
% \input{./text/glossary}
% \loadglsentries{./text/symbols}
\makeglossaries
\newacronym{pcm} {PCM} {phase change material}
\newglossaryentry{sym:hfus}{type=slg,sort={pl:h},
name = {\null$\Delta H_{fus}$},
description={latent heat of fusion}}
\begin{document}
Sample: \gls{sym:hfus}. \gls{sym:hfus}. \gls{pcm}. \gls{pcm}.
\textsc{This is small caps. PCM pcm }
\renewcommand{\glsnamefont}[1]{\makefirstuc{#1}}
\printglossary[type=slg, style=long, nonumberlist=true]
\renewcommand{\glsnamefont}[1]{\MakeUppercase{#1}}
\printglossary[type=acronym, style=long]
\end{document}
结果如下:
唯一大写的是数学环境中的 Fus,我真的不明白这是怎么发生的。其他一切(小型大写选项和大写描述)都不起作用。
有人可以解释一下我做错了什么吗?
答案1
正如评论中提到的,您的首字母缩略词没有以小写字母显示,因为您使用大写字母定义了它们。您说描述的大写字母不起作用。那是因为您没有对描述进行任何更改。\glsnamefont
应用于名称而不是描述。您需要定义一种新样式,使描述以大写字母开头:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[toc=true,smallcaps,section,nonumberlist,acronym,nomain]{glossaries}
\newglossary{slg}{sym}{syb}{Nomenclature}
\makeglossaries
\newacronym{pcm}{pcm}{phase change material}
\newglossaryentry{sym:hfus}{type=slg,sort={pl:h},
name = {\null$\Delta H_{fus}$},
description={latent heat of fusion}}
\newglossarystyle{long-ucdesc}{%
\setglossarystyle{long}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\Glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
}%
}
\begin{document}
Sample: \gls{sym:hfus}. \gls{sym:hfus}. \gls{pcm}. \gls{pcm}.
\textsc{This is small caps. PCM pcm }
\printglossary[type=slg, style=long-ucdesc, nonumberlist=true]
\renewcommand{\glsnamefont}[1]{\MakeUppercase{#1}}
\printglossary[type=acronym, style=long]
\end{document}
得出的结果为:
下面定义了一种使描述的首字母大写的样式:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[toc=true,smallcaps,section,nonumberlist,acronym,nomain]{glossaries}
\newglossary{slg}{sym}{syb}{Nomenclature}
\makeglossaries
\newacronym{pcm}{pcm}{phase change material}
\newglossaryentry{sym:hfus}{type=slg,sort={pl:h},
name = {\null$\Delta H_{fus}$},
description={latent heat of fusion}}
\newglossarystyle{long-ucdesc}{%
\setglossarystyle{long}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\Glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
}%
}
\makeatletter
\newglossarystyle{long-initcapsdesc}{%
\setglossarystyle{long}%
\renewcommand{\glsnamefont}[1]{\MakeUppercase{##1}}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\protected@edef\thisdesc{\glsentrydesc{##1}}%
\xcapitalisewords{\thisdesc}\glspostdescription\space ##2\tabularnewline
}%
}
\makeatother
\begin{document}
Sample: \gls{sym:hfus}. \gls{sym:hfus}. \gls{pcm}. \gls{pcm}.
\textsc{This is small caps. PCM pcm }
\printglossary[type=slg, style=long-ucdesc, nonumberlist=true]
\printglossary[type=acronym, style=long-initcapsdesc]
\end{document}
结果:
如果您拥有的版本至少为 4.22 glossaries
,则可以改用\glsentrytitlecase
:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[toc=true,smallcaps,section,nonumberlist,acronym,nomain]{glossaries}
\newglossary{slg}{sym}{syb}{Nomenclature}
\makeglossaries
\newacronym{pcm}{pcm}{phase change material}
\newglossaryentry{sym:hfus}{type=slg,sort={pl:h},
name = {\null$\Delta H_{fus}$},
description={latent heat of fusion}}
\newglossarystyle{long-ucdesc}{%
\setglossarystyle{long}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\Glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
}%
}
\newglossarystyle{long-initcapsdesc}{%
\setglossarystyle{long}%
\renewcommand{\glsnamefont}[1]{\MakeUppercase{##1}}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glsentrytitlecase{##1}{desc}\glspostdescription\space ##2\tabularnewline
}%
}
\begin{document}
Sample: \gls{sym:hfus}. \gls{sym:hfus}. \gls{pcm}. \gls{pcm}.
\textsc{This is small caps. PCM pcm }
\printglossary[type=slg, style=long-ucdesc, nonumberlist=true]
\printglossary[type=acronym, style=long-initcapsdesc]
\end{document}
和glossaries-extra
您可以使用该glossdesc
属性:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[section,nonumberlist,acronym,nomain]{glossaries-extra}
\newglossary{slg}{sym}{syb}{Nomenclature}
\makeglossaries
\setabbreviationstyle[acronym]{long-short-sc}
\newacronym{pcm}{pcm}{phase change material}
\newglossaryentry{sym:hfus}{type=slg,sort={pl:h},
name = {\null$\Delta H_{fus}$},
description={latent heat of fusion}}
\glssetcategoryattribute{acronym}{glossdesc}{title}
\glssetcategoryattribute{general}{glossdesc}{firstuc}
\begin{document}
Sample: \gls{sym:hfus}. \gls{sym:hfus}. \gls{pcm}. \gls{pcm}.
\textsc{This is small caps. PCM pcm }
\printglossary[type=slg, style=long, nonumberlist=true]
\printglossary[type=acronym, style=long]
\end{document}