LaTeX: acronym für Formelverzeichnis mit Einheiten versehen

By

in

Nutzt man in LaTeX acronym für das Erstellen eines Abkürzungsverzeichnisses, dann lassen sich standardmäßig bei der Definition mit \acro nur 3 Parameter übergeben, in denen keine Einheit vorgesehen ist:

LaTeX
\section*{Abkürzungsverzeichnis}
\begin{acronym}[LONGEST]
  \acro{KÜRZEL}{ABKÜRZUNG}{BESCHREIBUNG}
  % ...
\end{acronym}

In der PDF-Ausgabe sieht diese Eingabe dann wie folgt aus:

Um nun bei Formelzeichen auch eine Einheit hinter die Abkürzung einfügen zu können, muss man sich den Befehl \makebox und das von Acronym bereitgestellte \acroextra zu nutze machen:

LaTeX
\acro{KÜRZEL}[ABKÜRZUNG]{\acroextra{\makebox[18mm][l]{\si{ EINHEIT }}}BESCHREIBUNG}

Vereinfachen lässt sich diese Eingabe noch durch Erstellen eines eigenen Befehls \acrounit im Kopfbereich des LaTeX-Dokuments:

LaTeX
\newcommand{\acrounit}[1]{
  \acroextra{\makebox[18mm][l]{\si[per=frac,fraction=nice]{#1}}}
}

Dieser Befehl wird dann vor der Beschreibung eingefügt und dazu ein Parameter übergeben, was der Einheit des Formelzeichens entspricht. Zu beachten ist allerdings, dass hierfür noch das Paket siunitx benötigt wird! Die vereinfachte Eingabe sieht dann wie folgt aus:

LaTeX
\section*{Formelverzeichnis}
\begin{acronym}[LONGEST]
  % Allgemein:
  \acro{KÜRZEL}[ABKÜRZUNG]{\acrounit{SI-EINHEIT}BESCHREIBUNG}
  % Als Beispiele:
  \acro{A}[\ensuremath{A}]{\acrounit{\meter^2}Oberfläche}
  \acro{Rth}[\ensuremath{R_\mathrm{th}}]{ \acrounit{\kelvin\per\watt}Thermischer Widerstand}
  % ...
\end{acronym}

Und man erhält daraus die Ausgabe:

Was tun, wenn die Beschreibung mehrzeilig ist?

Ist der Beschreibungstext länger als die Seitenbreite, dann bricht dieser um. Das Unschöne daran: die zweite Zeile wird unter die Einheit geschoben.

Um dem entgegenzuwirken kann man etwas “tricksen”. Die Breite der Abkürzungsspalte einfach etwas verbreitern und anschließend die Einheit mit einem negativen \hspace{-21mm} wieder nach links schieben. Die Einheit hängt somit über der Abkürzungsspalte und der Beschreibungstext kann ganz normal umbrechen. Beim negativen Wert (hier -21 mm) muss man etwas spielen, da die Breite abhängig vom Text (im nachfolgenden Beispiel “LONGESTLONGEST”) ist. Hier der abgeänderte Code dazu:

LaTeX
\newcommand{\acrounit}[1]{
  \acroextra{
    \hspace{-21mm}\makebox[18mm][l]{\si[per=frac,fraction=nice]{#1}}
  }
}
\section*{Formelverzeichnis}
\begin{acronym}[LONGESTLONGEST] % hier die breitere Abkürzungsspalte
% ...

So sieht die Ausgabe aus LaTeX dann aus:



Comments

33 responses to “LaTeX: acronym für Formelverzeichnis mit Einheiten versehen”

  1. Danke! Genau sowas habe ich gesucht! Allerdings funktioniert es bei mir erst, wenn ich die Option [per=frac,fraction=nice] in der Definition von acrounit weglasse…

  2. Patrick Avatar

    kurze Frage, wie kann ich denn grichische Buchstaben darstellen /sigma wo ihr z.B. “A” habt geht nicht…

    1. mathias Avatar

      Hab leider gerade kein LaTeX zur Hand, aber hast du das griechische Symbol auch in \ensuremath{} gesetzt?
      \ensuremath{\alpha} sollte gehen!

      Und wenn es das “A” bei \acro{} ist, dann ist dies auch nur ein Kürzel, auf das im Text verwiesen wird. Hier dürfte ein griechisches Zeichen nicht funktionieren.

  3. Patrick Avatar

    ah alles klar…also das acro is nur für die Referenz im Text…danke für die Hilfe, so gehts:

    \acro{s}[\ensuremath{\sigma}]{\acrounit{\newton\per\meter^2}Zugspannung}
  4. wenn ich die erste Methode wähle (da ich auf mehreren Systemen schreibe ist mir diese lieber) bekomme ich eine Fehlermeldung. ist es sicher das diese Methode funktioniert?

    1. mathias Avatar

      Meinst du mit erster Methode die Variante ohne den eigenen Befehl \acrounit? Sollte eigentlich funktionieren. Was kommt denn als Fehlermeldung?

  5. Hallo bei mir kommt immer die Fehlermeldung
    Undefined control sequence.
    \acrounit
    {m^2}Fläche
    l.118 …A}[\ensuremath{A}]{\acrounit{m^2}Fläche}

  6. Fehlt mich noch ein Package? Wenn ja welches?
    Viele Grüße

  7. Funktioniert bei mir gut, allerdings erhalte ich durch den Zusatzkommande [LONGEST] folgende Meldung:

    Description Resource Path Location Type
    \begin{AC@deflist} on input line 46 ended by \end{acronym}. \end{acronym} (followed by: ) verzeichnisse.tex /doc/extras line 50 Texlipse Build Error

    Angezeigt wird alles tadellos, lasse ich [LONGEST] weg, rückt die zweite Spalte stark nach links, dafür ist allerdings die Fehldermeldung weg.

  8. Problem gelöst.

    1. mathias Avatar

      Woran lag es?

  9. hallo und danke für diesen Beitrag. Funktioniert soweit ganz gut, doch wird bei mir in der pdf-datei nicht die Einheit angezeigt. also der Befehl nach \acrounit{Einheit} wird nicht gelesen? Denn der Platz durch makebox ist vorhanden

  10. Danke.

  11. Andreas Avatar

    Hallo,
    eine tolle Anleitung nur leider hat sich die Version von siunitx bereits geändert und so musste auch ich per=frac,fraction=nice weglassen damit es funktioniert.

    Jetzt aber zu meiner Frage: was muss ich ändern damit die Einheit nicht als zweites sondern als letztes steht? Am besten so das die Beschreibung die restliche Seitenbreite voll ausnutzen kann und ich die Einheitenbreite mit den 18mm verändern kann.

    Gruß Andreas

  12. Hallo zusammen,

    Könntet ihr mir sagen, wie ich das Abkürzungsverzeichnis ins Inhaltsverzeichnis übertragen kann?

    Vielen Dank!

    1. Hallo Franzi! Für einen zusätzlichen Eintrag im Inhaltsverzeichnis sollte dir \addcontentsline weiterhelfen (http://www.weinelt.de/latex/addcontentsline.html).

      Um genau zu sein:

      \addcontentsline{toc}{section}{Abbildungsverzeichnis}
  13. \acro{TNF-a}[TNF-\ensuremath{\alpha}]{tumor necrosis factor-alpha}
    \acro{NF-kB}[NF-\ensuremath{\kappa}B]{nuclear factor kappa-light-chain-enhancer of activated B-cells}

    PDF:
    TNF-? tumor necrosis factor-alpha
    NF-?B nuclear factor kappa-light-chain-enhancer of activated B-cells

  14. Tolle Anleitung! Sie hat mir sehr geholfen 🙂

    Ich habe eine Frage zur Formatierung: Ich benutze viele Symbole, für die ich eine längere Erläuterung brauche. Der Text nach dem Zeilenumbruch rutscht dann nach links mit unter die Einheit. Hast du einen Tipp, wie ich das umgehen kann? Danke schon mal!

    1. mathias Avatar

      Hallo Caro! Du hast Glück, ich habe mich die letzten Tage gerade mit LaTeX beschäftigt 😉

      Mit etwas zusätzlichem Code sollte das gehen, was du möchtest. Ich habe den Beitrag entsprechend angepasst (siehe letzter Abschnitt).

      Hoffe, das hilft dir weiter.

    2. Danke Danke Danke!! 🙂

      Jetzt sieht mein Formelverzeichnis spitze aus! 🙂

  15. wieso werden die beispieldateien nieeeeee vollständig zur verfügung gestellt
    damit leser wie ich, einen zusammenhang erhalten.

    1. mathias Avatar

      An welcher Stelle fehlt dir der Zusammenhang?

  16. Offspring Avatar

    Gäbe es auch eine Möglichkeit in der Mitte des Verzeichnisses ein chapter*{} einzufügen, dass nicht eingerückt ist?
    Hintergrund: benötige ein Abkürzungs- und ein Symbolverzeichnis, soweit ich weiß darf im \begin{document} nur eine acronymliste enthalten sein, also müsste ich beide in eine Liste packen. Daher bräuchte ich irgendwo in der Mitte des Verzeichnisses etwas wie:

    \chapter*{Abk"urzungsverzeichnis}
    \begin{acronym}[LONGESTLON] % Passt soweit gut mit den Einheiten
    \acro{FEM}{Finite-Elemente-Methode}
    \acro{REM}{Randelementmethode}
    \chapter*{Symbolverzeichnis}
    \acro{KV}[\ensuremath{K_v}]{\acrounit{1}Dynamikfaktor}
    \acro{YSAG}[\ensuremath{Y_{Sag}}]{\acrounit{1}Spannungskorrekturfaktor bei Kerben im Zahnfuß bei Kraftangriff am Zahnkopf}
    \end{acronym}

    Logischerweise wird jetzt das Chapter bündig mit der Beschreibung gesetzt, ich würde es aber gerne bündig mit dem Symbol (also ganz vorne) haben. Ich habe diese Breite verwendet:

    \newcommand{\acrounit}[1]{\acroextra{\hspace{-18mm}\makebox[18mm][l]{\si{#1}}}}
    1. Mathias Lipowski Avatar
      Mathias Lipowski

      Ich nutze in einem Dokument auch mehrere Verzeichnisse parallel, allerdings mit etwas anderem Code wie oben angegeben. Vieleicht hilft das weiter:

      \printglossary[title=Abkürzungen,type=\acronymtype,style=acronym]
      \addcontentsline{toc}{chapter}{Abkürzungen}  
      
      \printglossary[title=Formelzeichen,type=formel,style=formula]
      \addcontentsline{toc}{chapter}{Formelzeichen}  
      
      % ---- Eintrag ins Glossar ----
      % \newglossaryentry{apf}{name=Apfel, description={Obst aus der Gruppe der Kernobstgewächse}}
       
      % ---- Eintrag ins Abkürzungsverzeichnis ----
      % \newacronym{cd}{CD}{Compact Disk}
      
      % ---- Eintrag ins Formelzeichenverzeichnis ----
      % \newglossaryentry{dichte}{
      %   name=Dichte,  
      %   description={Verhältnis von Gewicht zu Volumen},
      %   symbol={$\rho$},
      %   type=formel,
      %   user1={km/m3}
      % } 
      

      Und den Definitionen:

      % [ newglossary ]
      % Neuer Eintragstyp
      \newglossary[fog]{formel}{foi}{foo}{Formelzeichen} 
      
      % Neuer Verzeichnisstil für Abkürzungen
      \newglossarystyle{acronym}{%  
       \renewenvironment{theglossary}%  
        {\setlength\LTleft{0pt}
         \setlength\LTright{0pt}
         \begin{longtable}{@{}p{2cm}l@{}}}% @{} entfernt Padding 
        {\end{longtable}}%  
        \renewcommand*{\glsgroupheading}[1]{}% 
        \renewcommand*{\glossaryentryfield}[5]{%  
              \textbf{\glstarget{##1}{##2}} % Name
              & ##3 % Description  
          \\% end of row  
        }% 
        \renewcommand*{\glsgroupskip}{\relax}
      }
      
      % Neuer Verzeichnisstil der auch die Einheit beim Formelzeichen mit ausgibt
      \newglossarystyle{formula}{%  
       % Verzeichnis wird ein 'longtable' mit 3 Spalten
       \renewenvironment{theglossary}%  
        {\setlength\LTleft{0pt}
         \setlength\LTright{0pt}
         \begin{longtable}{@{}p{2cm}p{2cm}l@{}}}% @{} entfernt Padding
        {\end{longtable}}%  
        \renewcommand*{\glsgroupheading}[1]{}% 
          %    
        \renewcommand*{\glossaryentryfield}[5]{%  
       %   \glsentryitem{##1}% Entry number if required  
              ##4 %Symbol
              & \glsentryuseri{##1} % Einheit
              & \glstarget{##1}{##2} % Name 
                ##3 % Description  
          \\% end of row  
        }% 
        \renewcommand*{\glsgroupskip}{\relax}
      }
      \makeglossaries
      
  17. Tolle Anleitung, funktioniert Perfekt!

    Wäre es auch möglich die Einheiten an letzter stelle nach der Beschreibung zu stellen?

    1. Mathias Lipowski Avatar
      Mathias Lipowski
  18. Wenn man die Formelzeichen rechts von der Beschreibung haben will, bietet sich diese Modifikation an:

    \newcommand{\acrounit}[2]{
      \acroextra{\makebox[65mm][l]{#1} \makebox[25mm][r]{\si[per=frac,fraction=nice]{#2}}}
    }

    Und dann zum Schreiben von Abkürzungen:

    \acro{Kürzel}[\ensuremath{Formelzeichen}]{\acrounit{Bezeichnung}{\Einheit}}
    1. Hallo,
      ich möchte ebenfalls die Formelzeichen rechts von der Beschreibung haben. Mit der beschriebenen Vorhergehensweise funktioniert das auch ganz gut.
      Ein Problem habe ich aber dabei. Wenn ich im Text beim ersten mal die Beschreibung mit ausgeben möchte, dann klappt das nicht mehr mit \ac{}. Es gibt nur noch die Abkürzung aus. Hättest du eine Idee diesbezüglich? \acf{} und \acl{} helfen jedenfalls nicht weiter.

  19. Christina Avatar
    Christina

    Hallo,

    kann mir jemand sagen, wie ich ein Prozentzeichen einfügen kann? Mit \% funktioniert es nicht

    1. Mathias Lipowski Avatar
      Mathias Lipowski

      Hallo Christina, sollte aber mit \% funktionieren.
      Siehe auch hier: https://latex-kurs.blogspot.com/2012/09/latex-prozentzeichen.html

  20. Habe ein Abkürzungsverzeichnis nach der Beschreibung hier erstellt, was super funktioniert. Dann wollte ich zusätzlich ein Formelverzeichnis hinzufügen (wie hier beschrieben), nur bringt LaTeX mir dann die Fehlermeldung:
    “! LaTeX Error: Something’s wrong–perhaps a missing \item.”
    Oder geht auf diesem Weg es grundsätzlich nicht, Abkürzungs- und Formelverzeichnis zu erstellen?
    Falls dies der Fall ist, kann mir einer weiterhelfen ?

  21. ferdinand Avatar
    ferdinand

    Gibt es eine Möglichkeit, um die Einheiten eckige Klammern zu machen? Sobald ich eckige Klammern einfüge werden mir die Einheiten nicht mehr als Bruchschreibweise angezeigt.

    1. Mathias Lipowski Avatar
      Mathias Lipowski

      Das könnte mit \[ und \] oder auch mit \lbrack und \rbrack gehen.

      Siehe https://www.namsu.de/Extra/strukturen/Sonderzeichen.html

      Die eckigen Klammer ([,]) lassen sich sowohl im Text- als auch im Mathemodus durch [,] darstellen. Wobei man innerhalb der Mathematikumgebungen auch \lbrack und \rbrack verwenden kann.
      Das Kommando \[ bzw. \] öffnet bzw. schließt die displaymath Umgebung.

Leave a Reply

Your email address will not be published. Required fields are marked *