Seite 1 von 1

Problem mit \glossaryentryfield

Verfasst: Do 27. Okt 2022, 00:30
von der-Danner
Guten Abend liebe Community,
ich habe nach dem letzten Update des glossaries Paketes (v1.5) ein Problem mit dem Befehl \glossaryentryfield. Ich konnte dieses Problem lösen, indem ich das Paket so lade:
\usepackage[]{glossaries}[=v4.49] trotzdem würde ich das eigentliche Problem gern lösen.

Ich habe bereits herausgefunden, dass es an diesem Codeblock scheitert:
\renewcommand*{\glossaryentryfield}[5]{
\glstarget{##1}{##2}					%Name
&##3\dotfill							%Beschreibung
&##4							        %Symbol (wird von mir als Unit verwendet)
\\									%Ende
}%
Laut Dokumentation soll dieser Befehl durch \glossentry{label}{numberlist} ersetzt werden. Ich verstehe diesen Befehl allerdings nicht. Könnt ihr mir helfen, wie ich das Problem lösen kann?

Viele Grüße
Daniel

Re: Problem mit \glossaryentryfield

Verfasst: Do 27. Okt 2022, 08:50
von Stefan Kottwitz
Hallo Daniel,
der-Danner hat geschrieben:
Do 27. Okt 2022, 00:30
nach dem letzten Update des glossaries Paketes (v1.5) ein Problem mit dem Befehl \glossaryentryfield
was ist denn das Problem? Falsche Ausgabe, eine Warnung, eine Fehlermeldung (wie lautet sie?), kommt kein Glossar mehr, irgendwas anderes?

Weiterhin lässt es sich vllt. erst nachvollziehen, wenn Du ein Minimalbeispiel hier postest, was das Problem nachvollziehbar macht.

Stefan

Re: Problem mit \glossaryentryfield

Verfasst: Do 27. Okt 2022, 15:31
von der-Danner
Hallo Stefan,

vielen Dank für deine schnelle Antwort! Sorry, dass du mich so viele Sachen fragen musstest. Ich hoffe ich kann es jetzt besser beschreiben:

Dieser Fehler tritt auf:
Command \glossaryentryfield undefined. ...ntglossary[style=style1,type=symbolslist1]
Dieser verhindert den kompletten Latex-Lauf bereits zu beginn.

Hier das Minimalbeispiel (ich habe versucht es so klein wie möglich zu halten und trotzdem alle Pakete zu verwenden, die ich auch in meiner Arbeit verwende):
%Mein Dokument ist wirklich ein Buch ;)
\documentclass[]{scrbook}

%Pakete für meinen eigenen Glossariestyle
\usepackage{longtable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

%Glossarie Paket laden
\usepackage[]{glossaries}%[=v4.49] alles funktioniert, sobald man hier das %-entfernt

%Eintragungen der Glossarie-Symbole
\newglossary[svl]{symbolslist1}{syi1}{syg1}{Minimalbeispiel}
\newglossaryentry{symb:a_1}	{type=symbolslist1,name={A}, sort=i,description=	{Fläche1}, symbol={Quadratmeter}}
\newglossaryentry{symb:a_2}	{type=symbolslist1,name={a}, sort=i,description=	{Fläche2}, symbol={Quadratmeter}}
\newglossaryentry{symb:a_3}	{type=symbolslist1,name={Aa}, sort=i,description=	{Fläche3}, symbol={Quadratmeter}}

%Glossaries erstellen
\makeglossaries

%Mein eigener Style-->Hier ist ein Fehler nach dem Update bedingt durch \glossaryentryfield
\newglossarystyle{style1}{
\renewenvironment{theglossary}{\vspace{-0.35cm}\begin{longtable}{L{0.15\textwidth}L{0.65\textwidth}L{0.15\textwidth}}}{\end{longtable}}
% Kopf der Tabelle
\renewcommand*{\glossaryheader}{\bfseries Symbol: & \bfseries Beschreibung: & \bfseries SI-Einheit:\vspace{0,2cm}\endhead}
% Kein Abstand zwischen Gruppen
\renewcommand*{\glsgroupheading}[1]{}\renewcommand*{\glossarypreamble}{}
%Eigenschaften für die Tabelle
\renewcommand*{\glossaryentryfield}[5]{
\glstarget{##1}{##2}					%Name
&##3\dotfill							%Beschreibung
&##4									%Symbol (wird von mir als Unit verwendet)
\\										%Ende
}%
}

%Anfang des Dokumentes
\begin{document}
%Glossarie mit meinem Style und den Symbolden aus dem entsprechenden Einträgen (symbolslist1)
\printglossary[style=style1,type=symbolslist1]
Text mit Eintägen: \gls{symb:a_1}, \gls{symb:a_2} und \gls{symb:a_3}
\end{document}
Das Programm läuft ohne Probleme mit dem Zusatz [=v4.49] also
\usepackage[]{glossaries}[=v4.49]

Ich hoffe, das Minimalbeispiel ist hilfreich?

Ich freue mich schon auf deine Antwort! Solltest du noch etwas benötigen, dann einfach schreiben.

Viele Grüße von der Ostsee

Re: Problem mit \glossaryentryfield

Verfasst: Do 27. Okt 2022, 22:16
von der-Danner
Guten Abend liebes Forum,

ich habe jetzt eine Lösung für mein Problem gefunden (mit den neusten Funktionen):
\documentclass[]{scrbook}

%Pakete für meinen eigenen Glossariestyle
\usepackage{longtable}
\usepackage{amssymb}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

%Glossarie Paket laden
\usepackage[]{glossaries}

%Eintragungen der Glossarie-Symbole
\newglossary[svl]{symbolslist1}{syi1}{syg1}{Minimalbeispiel}
\newglossaryentry{symb:a_1}	{type=symbolslist1,name={A}, sort=i,description=	{Fläche1}, symbol={Quadratmeter}}
\newglossaryentry{symb:a_2}	{type=symbolslist1,name={a}, sort=i,description=	{Fläche2}, symbol={Quadratmeter}}
\newglossaryentry{symb:a_3}	{type=symbolslist1,name={Aa}, sort=i,description=	{Fläche3}, symbol={Quadratmeter}}

%Glossaries erstellen
\makeglossaries

%Mein eigener Style-->Hier ist ein Fehler nach dem Update
\newglossarystyle{style1}{
\renewenvironment{theglossary}{\vspace{-0.35cm}\begin{longtable}{L{0.15\textwidth}L{0.65\textwidth}L{0.15\textwidth}}}{\end{longtable}}
% Kopf der Tabelle
\renewcommand*{\glossaryheader}{\bfseries Symbol: & \bfseries Beschreibung: & \bfseries SI-Einheit:\vspace{0,2cm}\endhead}
% Kein Abstand zwischen Gruppen
\renewcommand*{\glsgroupheading}[1]{}\renewcommand*{\glossarypreamble}{}
%Eigenschaften für die Tabelle
\renewcommand*{\glossaryentryfield}[5]{
\glstarget{##1}{##2}					%Name
&##3\dotfill							%Beschreibung
&##4									%Symbol (wird von mir als Unit verwendet)
\\										%Ende
}%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Neuer überarbeiteter Style der auch nach dem Update funktioniert
\newglossarystyle{style2}{%
%Longtable für die Spaltenbreite
\renewenvironment{theglossary}% 
{\vspace{-0.35cm}\begin{longtable}{L{0.15\textwidth}L{0.65\textwidth}L{0.15\textwidth}}}{\end{longtable}}
% Kopf der Tabelle
\renewcommand*{\glossaryheader}{\bfseries Symbol: & \bfseries Beschreibung: & \bfseries SI-Einheit:\vspace{0,2cm}\endhead}% 
% Kein Abstand zwischen Gruppen
\renewcommand*{\glsgroupheading}[1]{}% 
\renewcommand*{\glossarypreamble}{}

%Eigenschaften für die Tabelle
\renewcommand*{\glossentry}[2]{% 
\glstarget{##1}{\glossentryname{##1}}		%Name
& \glossentrydesc{##1}\dotfill				%Beschreibung
& \glossentrysymbol{##1}					%Symbol (wird von mir als Unit verwendet)
\tabularnewline								%Ende
}%
}

%Anfang des Dokumentes
\begin{document}
%Glossarie mit meinem Style und den Symbolden aus dem entsprechenden Einträgen (symbolslist1)
\printglossary[style=style2,type=symbolslist1]
Text mit Einträgen: \gls{symb:a_1}, \gls{symb:a_2} und \gls{symb:a_3}
\end{document}
Vielleicht hat ja jemand auch diesen Fehler gehabt :)

Re: Problem mit \glossaryentryfield

Verfasst: Do 27. Okt 2022, 23:32
von Bartman
Ein Vorschlag mit siunitx für die Maßeinheiten:
\documentclass[ngerman]{scrbook}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{longtable}
\usepackage{array}
\usepackage[locale=DE]{siunitx}
\usepackage{collcell}
\usepackage[automake]{glossaries}
\usepackage{showframe}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

% Eintragungen der Glossar-Symbole
\newglossary[svl]{symbolslist1}{syi1}{syg1}{Symbolverzeichnis}
% oder
%\newglossary*{symbolslist1}{Symbolverzeichnis}

%Glossaries erstellen
\makeglossaries

\newglossaryentry{symb:a_1}{
  type=symbolslist1,
  name={A}, 
  sort=i,
  description={Fläche1}, 
  symbol={\m\squared}
}
\newglossaryentry{symb:a_2}{
  type=symbolslist1,
  name={a}, 
  sort=i,
  description={Fläche2}, 
  symbol={\square\m}
}
\newglossaryentry{symb:a_3}{
  type=symbolslist1,
  name={Aa}, 
  sort=i,
  description={Fläche3}, 
  symbol={\m\squared}
}

\newglossarystyle{style1}{
  \renewenvironment{theglossary}{%
    \vspace{-3.5mm}
    \begin{longtable}{
      L{0.15\textwidth}
      L{\glsdescwidth}% Länge ersetzt, damit die Tabelle innerhalb der Seitenränder bleibt
      >{\collectcell\unit}L{0.15\textwidth}<{\endcollectcell}
    }
  }{\end{longtable}}
  % Kopf der Tabelle
  \renewcommand*{\glossaryheader}{%
    \bfseries Symbol: 
    & \bfseries Beschreibung: 
    % wegen siunitx und collcell geändert
    & \multicolumn{1}{>{\bfseries}l}{SI-Einheit:}\\[2mm]
    \endhead
  }
  % Kein Abstand zwischen Gruppen
  \renewcommand*{\glsgroupheading}[1]{}
  \renewcommand*{\glossarypreamble}{}
  % Eigenschaften für die Tabelle
  \renewcommand*{\glossentry}[2]{%
    \glstarget{##1}{\glossentryname{##1}} % Name
    & \glsentrydesc{##1}\dotfill          % Beschreibung
    & \glsentrysymbol{##1}                % Symbol (wird als Maßeinheit verwendet)
    \tabularnewline
  }%
}

\begin{document}
\printglossary[style=style1,type=symbolslist1]
Text mit Eintägen: \gls{symb:a_1}, \gls{symb:a_2} und \gls{symb:a_3}
\end{document}