Problem mit \glossaryentryfield

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


der-Danner
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Mo 19. Okt 2020, 14:30

Problem mit \glossaryentryfield

Beitrag 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
Zuletzt geändert von Stefan Kottwitz am Do 27. Okt 2022, 08:45, insgesamt 1-mal geändert.
Grund: Code markiert

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2674
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Problem mit \glossaryentryfield

Beitrag 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

der-Danner
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Mo 19. Okt 2020, 14:30

Re: Problem mit \glossaryentryfield

Beitrag 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

der-Danner
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Mo 19. Okt 2020, 14:30

Re: Problem mit \glossaryentryfield

Beitrag 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 :)

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2460
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Problem mit \glossaryentryfield

Beitrag 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}

Antworten