
Estoy intentando hacer un pequeño diccionario de español con el paquete glossaries
. Intenté redefinir los títulos de grupo como secciones. Este es un MWE ( polyglossia
parece ser necesario, ya que no hay salida de PDF cuando lo omito):
%!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}
Lo que obtengo son las siguientes líneas de problema
Undefined control sequence. \glsgroupheading{C}
Undefined control sequence. \glsgroupheading{P}
Además, TOC muestra números en lugar de secciones reales:
También intenté usar secciones no numeradas agregándolas manualmente al TOC a través de \addcontentsline
, sin éxito. ¿Hay alguna manera de corregir estos errores?
Respuesta1
El problema es usar \glsgetgrouptitle
en el argumento de \section
, porque se trata de un argumento llamado en movimiento, es decir, se ejecutará en diferentes lugares del documento. Como \glsgetgrouptitle
no es ampliable y no funciona en ninguna parte del documento, esto no puede funcionar.
Dado que en su ejemplo \glsgetgrouptitle
en realidad no hace nada, puede omitirlo. Tenga en cuenta que debe redefinir \glsgroupheading
en el estilo del glosario y no en el \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}