glossários newacronym classifica por campo curto, mesmo que short seja fornecido como um comando

glossários newacronym classifica por campo curto, mesmo que short seja fornecido como um comando

Para meus documentos, gosto de definir sub e superscripts (em alemão: Indizes) como comandos para \newcommand{}{}criar uma estrutura em cascata de atalhos para abreviações usadas com frequência. Isso tem a enorme vantagem de poder alterar facilmente todas as abreviações e subscritos relacionados com uma única linha. Por exemplo:

  • Abreviatura TES para armazenamento de energia térmica\newcommand{\TES}{TES}
  • Também definido como subscrito ou variável matemática \newcommand{\TESi}{\mathit{\TES}}para uma bela formatação de texto matemático
  • Usado em texto com\TES{}
  • Usado em matemática. símbolos com $V_{\TESi}$para o volume de um TES
  • Adicionado aos glossários de sub e sobrescritos com\newacronym[type=indizes]{tes}{$\TESi$}{thermal energy storage}

A última etapa está causando alguns problemas: ao classificar as entradas, glossariesparece estar classificando poro nome do comandoem vez da string produzida pelo comando.
O que significa que se eu renomear a abreviatura inicial de newcommand{\TES}{TES}para newcommand{\TES}{ES}, os glossários serão classificados por \TESem vez de ES. Isto fica ainda pior quando as abreviaturasnão definido por newcommandsão adicionados (em alguns casos muito claros, simplesmente não há outra abreviatura útil), a classificação é completamente errada.
Adicionar \newacronym[type=indizes,sort=ES]funciona, mas novamente eu preferiria umsolução implícitapara flexibilidade, como \newacronym[type=indizes,sort=\TES], que novamente classifica por TESe não ES...

Meu exemplo mínimo de trabalho é (sim, eu poderia abandonar a definição do estilo do glossário, mas é muito mais fácil de ler assim :)):

\documentclass[a4paper,oneside,11pt,parskip=half]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{amsmath}

\usepackage[acronym, toc, nonumberlist, nopostdot, nomain, nogroupskip]{glossaries}

\newglossary[ilg]{indizes}{iyi}{iyg}{Indizes}

\setlength{\glsdescwidth}{12cm}
\makeglossaries
\glsnoexpandfields

% Stil für Indizes und Abkürzungen
\newglossarystyle{fixedglslong}{%
    \setglossarystyle{long}% base this style on the list style
    \renewenvironment{theglossary}{% Change the table type --> 3 columns
        \begin{longtable}{p{2cm}p{14.5cm}}}%
        {\end{longtable}}%
    %
    \renewcommand*{\glossentry}[2]{%        Change the displayed items
        \glstarget{##1}{\glossentryname{##1}} %
        & \glossentrydesc{##1} \tabularnewline
    }
}

%% abbreviations
\newcommand{\TES}{ES}   
\newcommand{\HT}{HT}        
\newcommand{\NT}{NT}
%% sub- and superscripts
\newcommand{\TESi}{\mathit{\TES}}
\newcommand{\HTi}{\mathit{\HT}}
\newcommand{\NTi}{\mathit{\NT}}
\newcommand{\IT}{I}
% glossary for sub- and superscripts:
\newacronym[type=indizes]{TES}{$\TESi$}{thermal energy storage}
\newacronym[type=indizes]{HT}{$\HTi$}{high temperature}
\newacronym[type=indizes]{NT}{$\NTi$}{low temperature}
\newacronym[type=indizes]{itens}{$I$}{inertia tensor}

\begin{document}

\glsaddall
\printglossary[type=indizes, style=fixedglslong]

\end{document}

Existe alguma maneira de classificar os itens corretamente, isso significapelas strings que são realmente impressas no documento? Ou posso de alguma forma fornecer uma chave de classificação adicional newacronym, como é possível \newglossaryentry? Verifiquei o documento dos glossários e tentei todos os tipos de variações, mas não parecia estar funcionando.
Mudar para o xindy poderia fazer com que funcionasse? Quais poderiam ser os efeitos colaterais inesperados?

Eu esperaria que a classificação do glossário fosse assim:

  1. ES thermal energy storage
  2. HT high temperature
  3. I inertia tensor
  4. NT low temperature

Responder1

Ok, encontrei a resposta. Se eu definir sanitizesort=falsecomo opção de pacote de glossários, as chaves de classificação serão expandidas:

\usepackage[
    acronym, toc, nonumberlist, nopostdot, nomain, nogroupskip, 
    sanitizesort=false  % false expands commands
]{glossaries}

Ainda parece haver alguns problemas de classificação com algumas entradas sem comando explicitamente definidas, mas em geral está funcionando bem.

edit: Agora que eu sei o que significa "higienização" em Latex e, portanto, procurei por isso, encontrei istopergunta/responderlidando com o mesmo problema.

informação relacionada