
Я пытаюсь сделать небольшой испанский словарь с помощью пакета glossaries
. Я попытался переопределить заголовки групп как разделы. Это MWE ( polyglossia
кажется, это необходимо, так как нет вывода PDF, когда я его пропускаю):
%!TEX program = xelatex
\documentclass[a4paper,12pt]{article}
\usepackage{polyglossia}
\setdefaultlanguage{spanish}
\usepackage{hyperref}
\usepackage[automake,style=long,xindy={language={spanish-modern}}]{glossaries-extra}
\newcommand{\entrada}[4][]{%
\renewcommand*{\glsgroupheading}[1]{%
\section{\glsgetgrouptitle{##1}}
}
\newglossaryentry{#2}%
{%
name=#2,%
symbol=#3,%
description=#4,%
#1%
}%
\glsadd{#2}%
}
\newglossarystyle{entrada}%
{%
\renewenvironment*{theglossary}{}{}
\renewcommand*{\glossaryentryfield}[5]{%
\par\vspace{0.25\baselineskip}%
\noindent{}##4\textbf{##2.} {##3}%
}%
}%
\makeglossaries
\begin{document}
\tableofcontents
\entrada{Pollo}{}{Ave}
\entrada{Carne}{}{Parte blanda de los animales}
\entrada{Cosa}{}{Objeto de}
\printglossary[style=entrada]
\end{document}
Я получаю следующие проблемные строки:
Undefined control sequence. \glsgroupheading{C}
Undefined control sequence. \glsgroupheading{P}
Более того, в TOC вместо реальных разделов показаны номера:
Я также пробовал использовать ненумерованные разделы, вручную добавляя их в TOC через \addcontentsline
, безуспешно. Есть ли способ исправить эти ошибки?
решение1
Проблема заключается в использовании \glsgetgrouptitle
в аргументе \section
, поскольку это так называемый перемещающийся аргумент, т. е. он будет выполняться в разных местах документа. Поскольку \glsgetgrouptitle
не расширяется и не работает нигде в документе, это не может работать.
Поскольку в вашем примере \glsgetgrouptitle
фактически ничего не делает, вы можете просто его убрать. Обратите внимание, что вам следует переопределить \glsgroupheading
в стиле глоссария, а не в \entrada
.
%!TEX program = xelatex
\documentclass[a4paper,12pt]{article}
\usepackage{polyglossia}
\setdefaultlanguage{spanish}
\usepackage{hyperref}
\usepackage[automake,style=long,xindy={language={spanish-modern}}]{glossaries-extra}
\makeglossaries
\newcommand{\entrada}[4][]{%
\newglossaryentry{#2}%
{%
name=#2,%
symbol=#3,%
description=#4,%
#1%
}%
\glsadd{#2}%
}
\newglossarystyle{entrada}%
{%
\renewenvironment*{theglossary}{}{}%
\renewcommand*\glossaryheader{}%
\renewcommand*\glsgroupheading[1]{%
\section{##1}%
}%
\renewcommand*\glsgroupskip{}%
\renewcommand*{\glossaryentryfield}[5]{%
\par\vspace{0.25\baselineskip}%
\noindent{}##4\textbf{##2.} {##3}%
}%
}%
\begin{document}
\tableofcontents
\entrada{Pollo}{}{Ave}
\entrada{Carne}{}{Parte blanda de los animales}
\entrada{Cosa}{}{Objeto de}
\printglossary[style=entrada]
\end{document}