глоссарии newacronym сортирует по короткому полю, даже если short задано как команда

глоссарии newacronym сортирует по короткому полю, даже если short задано как команда

Для своих документов я люблю определять подстрочные и надстрочные индексы (по-немецки: Indizes) как команды, чтобы \newcommand{}{}создать каскадную структуру сочетаний клавиш для часто используемых сокращений. Это имеет огромное преимущество, так как я могу легко изменить все связанные сокращения и подстрочные индексы одной строкой. Например:

  • Аббревиатура TES означает хранение тепловой энергии.\newcommand{\TES}{TES}
  • Также определяется как подстрочный индекс или математическая переменная \newcommand{\TESi}{\mathit{\TES}}для красивого форматирования математического текста.
  • Используется в тексте с\TES{}
  • Используется в математике. Символы с $V_{\TESi}$обозначением объема ТЭС
  • Добавлено в глоссарии нижних и верхних индексов с\newacronym[type=indizes]{tes}{$\TESi$}{thermal energy storage}

Последний шаг вызывает некоторые проблемы: при сортировке записей, glossariesпохоже, сортировка происходит поназвание командывместо строки, созданной командой.
Это означает, что если я переименую начальную аббревиатуру с newcommand{\TES}{TES}на newcommand{\TES}{ES}, то глоссарии будут отсортированы по \TESвместо ES. Это становится еще хуже, когда аббревиатурыне определено newcommandдобавляются (в некоторых очень ясных случаях просто нет других полезных сокращений), сортировка полностью отключена.
Добавление \newacronym[type=indizes,sort=ES]работает, но я бы предпочелнеявное решениедля гибкости, например \newacronym[type=indizes,sort=\TES], , который снова сортирует по TESи не ES...

Мой минимальный рабочий пример такой (да, я мог бы опустить определение в стиле глоссария, но так гораздо проще читать :) ):

\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}

Есть ли способ правильно отсортировать предметы, т.е.по строкам, которые фактически напечатаны в документе? Или я могу как-то предоставить дополнительный ключ сортировки для newacronym, как это возможно для \newglossaryentry? Я проверил документацию по глоссариям и перепробовал все виды вариаций, но это, похоже, не работает.
Может ли переключение на xindy заставить это работать? Какие могут быть неожиданные побочные эффекты?

Я ожидаю, что сортировка глоссария будет выглядеть следующим образом:

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

решение1

Ок, я нашел ответ. Если я установлю sanitizesort=falseкак опцию пакета глоссариев, ключи сортировки будут расширены:

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

Похоже, что все еще существуют некоторые проблемы сортировки с некоторыми явно определенными записями, не являющимися командами, но в целом все работает нормально.

правка: Теперь, когда я знаю, что означает «дезинфекция» в латексе, и поэтому искал это, нашел этовопрос/отвечатьстолкнулись с той же проблемой.

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