Eintrag in Index und GLossar

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


MikMax

Eintrag in Index und GLossar

Beitrag von MikMax »

Hallo, ich habe mich nach langem dokumentation wälzen bis hierhin vorgearbeitet. Hier komme ich aber nicht weiter.
Ich hätte es gern, das ich einen gls eintrag automatisch im Glossar und im Index auftauchen lassen kann.
\begin{filecontents}{\jobname.bib}
%Arconyme
\newacronym{MIC}{MIC}{Microsoft oder so}
%Glossar
\newglossaryentry{test}{%
	name={name},
  	text={text},
  	description={description}
}
%index
\newglossaryentry{index}{
	name=index,
	description={Beschreibung},
	type=index
}
%Symbolverz
\newglossaryentry{symb:Phi}{
name=$\varphi$,
description={Ein Winkel},
sort=symbolphi, type=symbolslist
}
%in mehreren  <---------------------
\newglossaryentry{alle}{%
	name={alle},
  	text={text},
  	description={description},
  	type={index, symbolslist} %er nimmt nur den letzten oder mit klammern alles
}
\end{filecontents}  

\documentclass[12pt]{scrbook}
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{csquotes}

\usepackage[
nonumberlist=true, 
acronym,      
toc,         
%index,		  
section]      
{glossaries}
%
\usepackage[%
stylemods=bookindex,
style=tree,
nostyles,		
]
{glossaries-extra}

\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
\newglossary[ilg]{index}{ind}{idx}{Index}

\makeglossaries
\loadglsentries{\jobname.bib}

\begin{document}
Test text mit Abkürzung \gls{MIC} und Glossar \gls{test} und Symbol \gls{symb:Phi}\\
und dazu noch einen Index \gls{index} und der Versuch für \gls{alle}

\printglossary[title=Glossar]
\printglossary[title=Abkürzungsverzeichnis, type=\acronymtype]
\printglossary[type=symbolslist]
\printglossary[type=index, nonumberlist=false, style=bookindex]

\end{document}
Hier bekomme ich den Fehler
! Package xkeyval Error: `symbolslist' undefined in families `glossentry'.
Ich bin unsicher ob es an meinem aufruf liegt oder an etwas anderem.

Mein Wunsch ist es bei einem Eintrag etwas in Glossar (main?) und im Index auftauchen zu lassen.

Vielen Dank im vorraus

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

Beitrag von Bartman »

glossaries-extra lädt glossaries.

Gemäß der Dokumentation erwartet der Schlüssel type keine Liste von Werten, sondern nur einen Wert.

Vielleicht hilft Dir Glossary entries for multiple glossaries weiter.

MikMax

Beitrag von MikMax »

Danke, aber dann muss ich ja alle Einträge welche ich habe doppelt definieren.
Ich habe vielleicht etwas gefunden, aber ich habe es noch nicht so ganz verstanden.
https://tex.stackexchange.com/questions ... -at-the-sa
dort wird es so definiert, dass es in beiden auftauchen kann.
Ich versuche das mal auf meinen Fall anzuwenden.

Falls es für einen von euch klar ist was sie dort machen wäre ich um etwas Hilfe glücklich, da ich noch am ANfang von Latex stehe.

Ich Update es hier sobald ich es verstande habe.
Vielen Dank

MikMax

Beitrag von MikMax »

Was ich bis jetzt verstanden habe:
-Es gibt noch ein datagidx welches ich so weit ich glaube ich nicht benötige
meine anmerkungen sind mit %## gekennzeichnet
\documentclass{article}

\usepackage{datagidx} %das benötige ich wohl nicht
\usepackage[colorlinks]{hyperref}

\newgidx{glossary}{Glossary} %neue Datenbanken \newgidx{<label>}{<title>}
\newgidx{acronyms}{Acronyms}
\newgidx{index}{Index}

% Syntax: \newacronym[options]{short}{long}
% Defines an acronym that also has an entry in the index

%%\newcommand{\name}[num]{definition}
\newcommand{\newacronym}[3][]{%                   %##der name ist newacronym und es gibt 3 definitionen
  \newterm[database={index},    %##newterm=newglossarieentry in datenbank index
   sort={#3},                             %## sortiert nach definition3
   label={index.#2}]%               %## label ist index.definition2  ?von \gls[<options>]{[b]<label>[/b]}[<insert>]?
   {\MakeTextUppercase{#2}}%  %##schreibt alles aus definition2 groß
  \newacro[database={acronyms},label={acronym.#2},#1]    %##definiert ein neues acronym im datagidx package ?brauche ich nicht?
   {\MakeTextUppercase{#2}}{#3}% macht den text wieder groß
}
%##was oben passiert ist habe ich nicht so genau im zusammenhang verstanden label und sort zum beispiel taucht doch gar nicht in dem neuen Befehl auf nur options#1 short#2 und long#3 ?

% Syntax: \newentry[options]{label}{name}
% Defines a glossary entry that also appears in the index

\newcommand{\newentry}[3][]{%                 %##der name ist newacronym und es gibt 3 definitionen
  \newterm[database={glossary},                 %##newterm=newglossarieentry in datenbank glossary
   label={glossary.#2}, %                              %## das label
#1]                                                            %##  ???? müssten irgendwie die optionen sein
{#3}                                                            %##der name des newterm
  \newterm[database={index},label={index.#2},#1]{#3}      %##das gleiche in der Datenbank index
}

% Syntax: \newacronymentry[options]{short}{long}{description}
% Like \newacronym but also adds the entry to the glossary

\newcommand{\newacronymentry}[4][]{                 %##neues kommande mit dem namen
  \newterm[database={glossary},label={glossary.#2},%## eintrag in glossary mit dem label glossary.definition2
    sort={#2},#1,description={#4}]%                       %##sortiert nach def2 und die beschreibung wird def4
    {\MakeTextUppercase{#2}}%                               %##def2 wird ab jetzt groß geschrieben 
  \newterm[database={index},sort={#3},label={index.#2}]% %##das gleiche für Index
    {\MakeTextUppercase{#2}}%
  \newacro[database={acronyms},label={acronym.#2},#1]% %##und für acronym
    {\MakeTextUppercase{#2}}{#3}%
}

%## ab hier runter nur rudimentäres verständnis bis jetzt.
%## es wird nach den labels geguckt und dann werden sie in die jeweiligen glossaries geschrieben 

% Syntax: \xgls{label}
% If acronym.#1 exists use that and index
% Otherwise if glossary.#1 exists, use that and index the others.
% Otherwise if index.#1 use index.#1
% If none of the above, just do \gls{label}

\newcommand{\xgls}[1]{%
  \iftermexists{acronym.#1}%
  {%
    \acr{acronym.#1}%
    \iftermexists{glossary.#1}%
    {\glsadd{glossary.#1}}%
    {}%
    \iftermexists{index.#1}%
    {\glsadd{index.#1}}%
    {}%
  }%
  {%
    \iftermexists{glossary.#1}%
    {%
      \gls{glossary.#1}%
      \iftermexists{index.#1}%
      {\glsadd{index.#1}}%
      {}%
    }%
    {%
      \iftermexists{index.#1}%
      {\gls{index.#1}}%
      {%
        \gls{#1}%
      }%
    }%
  }%
}

% Define some acronyms

%##ab hier wieder einigermaßen verständlich  die oben neu definierten befehle werden benutzt

\newacronym{html}{hypertext markup language}
\newacronym{csv}{comma-separated variable}

% Define some glossary entries

\newentry[description={A typesetting language},sort={TeX}]{tex}{\TeX}
\newentry[description={A format of \TeX},sort={LaTeX}]{latex}{\LaTeX}

% Define some acronyms that also go in the glossary

\newacronymentry{pdf}{portable document format}{A file format}

% Define a term that isn't an acronym or a glossary entry

\newterm[database=index]{sample}

\begin{document}

First use: \xgls{html}.
First use: \xgls{csv}.
First use: \xgls{pdf}.
Reference \xgls{tex}.
Reference \xgls{latex}.
Reference the \xgls{sample} term.

\clearpage

Second use: \xgls{html}.
Second use: \xgls{csv}.
Second use: \xgls{pdf}.
Reference \xgls{tex}.
Reference \xgls{latex}.
Reference the \xgls{sample} term.

\printterms[database=acronyms,columns=1,location=hide]

\printterms[database=glossary,columns=1,location=hide]

\printterms[database=index,columns=1]

\end{document}

MikMax

Beitrag von MikMax »

ich habe es gelößt bekommen vielen Dank :)

Antworten