Utilice títulos de grupos del glosario como secciones/capítulos/etc.

Utilice títulos de grupos del glosario como secciones/capítulos/etc.

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 ( polyglossiaparece 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: ingrese la descripción de la imagen aquí

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 \glsgetgrouptitleen el argumento de \section, porque se trata de un argumento llamado en movimiento, es decir, se ejecutará en diferentes lugares del documento. Como \glsgetgrouptitleno es ampliable y no funciona en ninguna parte del documento, esto no puede funcionar.

Dado que en su ejemplo \glsgetgrouptitleen realidad no hace nada, puede omitirlo. Tenga en cuenta que debe redefinir \glsgroupheadingen 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}

información relacionada