Symbolverzeichnis in eigener .tex schreiben

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


trustvble_
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mo 7. Aug 2023, 15:54

Symbolverzeichnis in eigener .tex schreiben

Beitrag von trustvble_ »

Hallo,

habe jetzt alles Mögliche durchsucht und auch schon chatGPT gefragt. Aber auf keine Lösung gekommen. Also doch wieder der alte Weg und über ein Forum... (komme wohl den hämischen Kommentaren der eingestandenen LaTeX User nicht aus) (jeder fängt mal an mit LaTeX und ihr habt das auch;))

Ist es möglich das Symbolverzeichnis in einer eigenen .tex zu schreiben?
Ich hätte gerne das es 3 Spalten hat mit Symbol, Einheit, Beschreibung sowie wenn ich im Fließtext über das entsprechende Symbol mit dem Cursour gehe, ich dieses anklicken kann und dann ins Symbolverzeichnis weitergeleitet werde.

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

Re: Symbolverzeichnis in eigener .tex schreiben

Beitrag von Bartman »

Es sollte möglich sein, die Einträge in eine Datei auszulagern und diese in die Ziel-Datei zu laden.

Du hast bei Deiner Suche vermutlich schon von dem einen oder anderen Paket gelesen, das derartige Verzeichnisse zu erstellen vermag. Alle Pakete bieten mindestens die Ausgabe von zwei Spalten an, eine für eine Abkürzung oder ein Symbol und eine für die Beschreibung. Ab einer dritten Spalte wird es etwas aufwendiger. Die meisten Beispiele in den Foren benutzen dafür zwar das Paket glossaries, aber in der Beispielsammlung des Pakets acro auf GitHub (oder CTAN) wird man unter dem Dateinamen acro.example.units auch fündig.

trustvble_
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mo 7. Aug 2023, 15:54

Re: Symbolverzeichnis in eigener .tex schreiben

Beitrag von trustvble_ »

Hallo,

ich habe in der von dir beschriebenen acro.example.units etwas gefunden und schon etwas angepasst.

Die Main-Datei schaut so aus:
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[version=3]{acro}

\input{Symbolverzeichnis}

\begin{document}

\section{Einleitung}

Die \ac{F} ist eine physikalische Größe. 

% nur die Klasse 'physics' auflisten:
\printacronyms[template=physics, include=physics]%, name=Formelverzeichnis]

\end{document}


Die Symbolverzeichnis.tex Datei schaut so aus:
\acsetup{ list/display = all , pages/display = all}

\usepackage{longtable,siunitx}

\DeclareAcroProperty{unit}

% "Acronyme" (tatsächlich physikalische Größen) einer speziellen Klasse:
\DeclareAcronym{f}{
  short = \ensuremath{f} ,
  long  = Frequenz ,
  unit  = \si{[\hertz]} ,
  tag   = physics
}
\DeclareAcronym{A}{
  short = \ensuremath{A} ,
  long  = Fläche ,
  unit  = \si{\metre^2} ,
  tag   = physics
}
\DeclareAcronym{C}{
  short = \ensuremath{C} ,
  long  = Kapazität ,
  unit  = \si{\farad} ,
  tag   = physics
}
\DeclareAcronym{F}{
  short = \ensuremath{F} ,
  long  = Kraft ,
  unit  = \si{\newton} ,
  tag   = physics
}

\NewAcroTemplate[list]{physics}{%
  \acronymsmapT{%
    \AcroAddRow{%
      \acrowrite{short}%
      &
      \acrowrite{unit}%
      &
      \acrowrite{list}%
      &
      \acropages
        {\acrotranslate{page}\nobreakspace}%
        {\acrotranslate{pages}\nobreakspace}%
      \tabularnewline
    }%
  }%
  \acroheading
  \acropreamble
  \par\noindent
  \setlength\LTleft{0pt}%
  \setlength\LTright{0pt}%
  \begin{longtable}{@{}lll@{\extracolsep{\fill}}l@{}}
    \AcronymTable
  \end{longtable}
}
Das gefällt mir schonmal ganz gut. Dennoch würde ich gerne das ein oder andere verändern, sehe aber im Moment nicht wie ich das realisieren kann.

Änderungen:
1. Anstatt "Abkürzungen" hätte ich gerne "Symbolverzeichnis"
2. Ich hätte gerne ein bisschen mehr Platz zwischen den einzelnen Spalten.
3. Die "1" am rechten Seitenrand hätte ich gerne, dass diese verschwindet.
4. Wünschenswert: Das "(F)" anklickbar machen, sodass man ins Symbolverzeichnis geleitet wird.

Wenn hierzu jemand Möglichkeiten für die Umsetzung der Punkte 1 - 4 hat, wäre ich demjenigen sehr verbunden!:))

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

Re: Symbolverzeichnis in eigener .tex schreiben

Beitrag von Bartman »

Die erste, dritte und vierte Änderung kann jeweils mit einer Option des Pakets vorgenommen werden, wobei letztere das Paket hyperref benötigt. Für das Erfüllen des zweiten Wunsches muss man die Vorlage physics überarbeiten.
\begin{filecontents}[overwrite]{Symbolverzeichnis.tex}
\acsetup{
  make-links,% hinzufügen und hyperref laden
  list/display = all, 
%  pages/display = all% gibt die Seitennummern aus
}

\DeclareAcroProperty{unit}

% "Acronyme" (tatsächlich physikalische Größen) einer speziellen Klasse:
\DeclareAcronym{f}{
  short = \ensuremath{f} ,
  long  = Frequenz ,
  unit  = \unit{\hertz} ,% alten durch neuen Befehl ersetzt
  tag   = physics
}
\DeclareAcronym{A}{
  short = \ensuremath{A} ,
  long  = Fläche ,
  unit  = \unit{\metre\squared} ,
  tag   = physics
}
\DeclareAcronym{C}{
  short = \ensuremath{C} ,
  long  = Kapazität ,
  unit  = \unit{\farad} ,
  tag   = physics
}
\DeclareAcronym{F}{
  short = \ensuremath{F} ,
  long  = Kraft ,
  unit  = \unit{\newton} ,
  tag   = physics
}

\NewAcroTemplate[list]{physics}{%
  \acronymsmapT{%
    \AcroAddRow{%
      \acrowrite{short}%
      &
      \acrowrite{unit}%
      &
      \acrowrite{list}%
      &
      \acropages
        {\acrotranslate{page}\nobreakspace}%
        {\acrotranslate{pages}\nobreakspace}%
      \tabularnewline
    }%
  }%
  \acroheading
  \acropreamble
  \par\noindent
  \setlength\LTleft{0pt}%
  \setlength\LTright{0pt}%
  \setlength{\tabcolsep}{2\tabcolsep}% vergrößert den Abstand zwischen den Spalten 
  \begin{longtable}{
    % @{decl.} wird in der Dokumentation des Pakets array erklärt.
    @{}l%@{\hspace{1cm}}% vergrößert nur den Abstand zwischen diesen beiden Spalten
    l%@{\hspace{2cm}}
    l@{\extracolsep{\fill}}l@{}
  }
    \AcronymTable
  \end{longtable}
}    
\end{filecontents}

\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage[locale=DE]{siunitx}
\usepackage{acro}
\usepackage{hyperref}

\input{Symbolverzeichnis}

\begin{document}
\section{Einleitung}
Die \ac{F} ist eine physikalische Größe. 

% nur die Klasse 'physics' auflisten:
\printacronyms[
  template=physics, 
  include=physics,
  % Kommentarzeichen in der Vorlage entfernen und anpassen
  name=Symbolverzeichnis
]
\end{document}

Antworten