Пакет Glossaries: заглавные и строчные буквы в индексе не работают

Пакет Glossaries: заглавные и строчные буквы в индексе не работают

Я использую glossariesпакет в pdfLaTeX. Я пытаюсь

  1. используйте аббревиатуры, написанные заглавными буквами в основном тексте

    и

  2. для индекса сделайте первую букву каждого названия записи в глоссарии заглавной.

Я уже пытался поискать, но не смог найти решения.

Чтобы получить глоссарий, я запускаю команду, 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}

Связанный контент