![глоссарии newacronym сортирует по короткому полю, даже если short задано как команда](https://rvso.com/image/420753/%D0%B3%D0%BB%D0%BE%D1%81%D1%81%D0%B0%D1%80%D0%B8%D0%B8%20newacronym%20%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D0%B5%D1%82%20%D0%BF%D0%BE%20%D0%BA%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%BE%D0%BC%D1%83%20%D0%BF%D0%BE%D0%BB%D1%8E%2C%20%D0%B4%D0%B0%D0%B6%D0%B5%20%D0%B5%D1%81%D0%BB%D0%B8%20short%20%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BE%20%D0%BA%D0%B0%D0%BA%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0.png)
Для своих документов я люблю определять подстрочные и надстрочные индексы (по-немецки: 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 заставить это работать? Какие могут быть неожиданные побочные эффекты?
Я ожидаю, что сортировка глоссария будет выглядеть следующим образом:
ES thermal energy storage
HT high temperature
I inertia tensor
NT low temperature
решение1
Ок, я нашел ответ. Если я установлю sanitizesort=false
как опцию пакета глоссариев, ключи сортировки будут расширены:
\usepackage[
acronym, toc, nonumberlist, nopostdot, nomain, nogroupskip,
sanitizesort=false % false expands commands
]{glossaries}
Похоже, что все еще существуют некоторые проблемы сортировки с некоторыми явно определенными записями, не являющимися командами, но в целом все работает нормально.
правка: Теперь, когда я знаю, что означает «дезинфекция» в латексе, и поэтому искал это, нашел этовопрос/отвечатьстолкнулись с той же проблемой.