
Estou tentando fazer um pequeno dicionário de espanhol com o pacote glossaries
. Tentei redefinir os títulos dos grupos como seções. Este é um MWE ( polyglossia
parece necessário, pois não há saída em PDF quando eu o 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}
O que recebo são as seguintes linhas de problema
Undefined control sequence. \glsgroupheading{C}
Undefined control sequence. \glsgroupheading{P}
Além disso, o TOC mostra números em vez de seções reais:
Também tentei usar seções não numeradas adicionando-as manualmente ao TOC via \addcontentsline
, sem sucesso. Existe alguma maneira de corrigir esses erros?
Responder1
O problema é usar \glsgetgrouptitle
o argumento de \section
, porque este é o chamado argumento móvel, ou seja, será executado em diferentes locais do documento. Como \glsgetgrouptitle
não é expansível e não funciona em nenhum lugar do documento, isso não pode funcionar.
Como no seu exemplo \glsgetgrouptitle
na verdade não faz nada, você pode simplesmente deixá-lo de fora. Observe que você deve redefinir \glsgroupheading
no estilo do glossário e não no estilo \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}