Abkürzungen automatisch finden

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Crys
Forum-Century
Forum-Century
Beiträge: 202
Registriert: So 16. Okt 2011, 20:34
Wohnort: localhost:1337

Abkürzungen automatisch finden

Beitrag von Crys »

Ich benötige ein Abkürzungsverzeichnis für meine Studienarbeit.

Aktuell sieht das (sehr stark gekürzt) so aus:
\documentclass[
	pdftex,
	a4paper,
	oneside,
	12pt,
	bibliography=totocnumbered,
	listof=numbered
]{scrbook}

% Festlegen der Zeichencodierung des Dokuments und des Zeichensatzes
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

% Packet für die Index-/Literaturverzeichnis Erstellung laden.
\usepackage{makeidx}

% Abkürzungsverzeichnis
\usepackage[
	%footnote, 	% Langform in Fusszeile, nicht in Klammer
	nohyperlinks, 
	printonlyused
]{acronym}

\begin{document}

% Inhaltsverzeichnis
\tableofcontents

\chapter{Kapitel}
\label{sec:Kapitel}
Das \ac{LBG} wird bei -160°C und einem Überdruck von bis zu 20bar gelagert. Das \ac{CBG} oder \ac{CNG} kann bei 20°C gelagert werden, benötigt aber 80 bis 300bar Überdruck.

Hier steht noch mal \ac{LBG} und dann natürlich auch \ac{CBG} und CNG. Das sind Abk!

% Anhang
\appendix

\chapter{Anhang}
\label{sec:Anhang}

% Abkürzungsverzeichnis
\begingroup
	\let\chapter=\section
	\let\addchap=\addsec
	\section{Abkürzungsverzeichnis}
	
	\begin{acronym}
		\acro{Abk}{Abkürzung}
		\acro{LBG}{Liquide Biogas}
		\acro{CBG}{Compressed Biogas}
		\acro{CNG}{Compressed Natural Biogas}
	
	%	Eine Erklärung sollte eig. auch noch dabei sein:
	%	\acro{Abk}{Abkürzung}{Kurzform eines Wortes}
	%	\acro{LBG}{Liquide Biogas}{Flüssiger Bio Methan}
	%	\acro{CBG}{Compressed Biogas}{Komprimierter Bio Methan}
	%	\acro{CNG}{Compressed Natural Biogas}{Wie CBG, aber nur grob gereinigt}
		
		% ...
		
	\end{acronym}
	
\endgroup

\end{document}
Was mir nicht gefällt:
  • - Das ich jedes mal, wenn ich eine Abkürzung in den Text schreibe diese auch als Abkürzung markieren muss, also mit \ac{###}! Sondern das alle Wörter aus "acronym" automatisch als Abkürzung erkannt werden!
    Da ich nicht alleine an der Arbeit schreibe und die Kapitelreihenfolge noch nicht fest ist, weiß ich nicht was die erste verwendete Abkürzung ist! Denn ich möchte nur an der ersten Abkürzung die lange Schreibweise haben, der Rest soll kurz sein!

    - Dann möchte ich noch eine Erklärung im Abkürzungsverzeichnis haben, nicht nur die Kurz- und Langform! Wie ist das möglich?

Crys
Forum-Century
Forum-Century
Beiträge: 202
Registriert: So 16. Okt 2011, 20:34
Wohnort: localhost:1337

Beitrag von Crys »

Noch mal die Frage in kurz:
Ich möchte nicht jede Abkürzung im Text selbst kenntlich machen, sondern nur (am Ende des Skripts) eine Liste aller Abkürzungen erstellen, die dann LaTex automatisch sucht und im Text kenntlich macht!
Ist das möglich?

Apfeltasche
Forum-Century
Forum-Century
Beiträge: 113
Registriert: Mi 31. Aug 2011, 14:47

Beitrag von Apfeltasche »

1. Die Funktionalität nur bei der ersten Verwendung der Abkürzung die komplette Bezeichnung zu setzen und danach nur noch die Abkürzung bietet auf jeden Fall das glossaries-Paket. Ich nehme mal an, dass das mit acronym auch geht. Wenn nicht, dann aber mit dem nomencl-Paket. Weiß gerade nicht, welches von beiden. Falls Zeit da ist, kann man aber auf glossaries umsteigen.

2. Zusätzlich zu Lang- und Kurzform eine Erklärung funktioniert auf jeden Fall mit dem glossaries-Paket.

3. Wie wäre es, wenn du einfach deine Abkürzungen komplett schreibst und am Ende mit einem Texteditor mit Suchen & Ersetzen die Befehle davorsetzt. Das macht natürlich auch Arbeit, aber ein eleganterer Weg fällt mir gerade nicht ein.

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Crys hat geschrieben:Noch mal die Frage in kurz:
Ich möchte nicht jede Abkürzung im Text selbst kenntlich machen, sondern nur (am Ende des Skripts) eine Liste aller Abkürzungen erstellen, die dann LaTex automatisch sucht und im Text kenntlich macht!
Ist das möglich?
Hallo ich denke, dass alle Möglichkeiten, die LaTeX im Bezug auf Glossare etc. bietet das Paket "glossaries" zugänglich macht. Da TeX nicht zurückschauen kann, ist es nicht möglich von einer am Ende definierten Liste nicht ausgezeichnete Teile auszuzeichnen. Es liegt eben in der Natur einer Markup Sprache, dass man Dinge auszeichnen muss.

Möchtest du das trotzdem realisieren, würde ich eine Kombination aus Glossaries und einem perl Skript vorschlagen. Indem du dann das perl Skript nach den Abkürzungen suchen lässt und diese dann damit Auszeichnest.
Da musst du dich aber Fragen ob es nicht einfacher ist, die Auszeichnug während des Schreibens eben manuell vorzunehmen.

Die Sache mit Suchen und Ersetzten wird dann sehr nervig, wenn man mehrere Dateien hat.
[1] Nützliche Webdokumente für Anfänger und Fortgeschrittene
[2]Minimalbeispiel | [3]FAQ
[4]Regelwerk | [5] Knigge
Wenn nicht anderst angegeben ist mein System: texlive 2012, pdflatex, x86-64, Snow Leopard utd.
Angehöriger der Liga zur Verwendung von texdoc
texdoc mathmode koma l2picfaq l2tabu lshort-en
Achtung: Aufforderungen ein Minimalbeispiel oder mehr Erklärungen zu einer Frage zu liefern sind keine persönlichen Angriffe. Sie dienen viel mehr dazu die Kommunikation zwischen Fragendem und potentiellen Helfern zu erleichtern und zu präzisieren.


Apfeltasche
Forum-Century
Forum-Century
Beiträge: 113
Registriert: Mi 31. Aug 2011, 14:47

Beitrag von Apfeltasche »

bloodworks hat geschrieben: Die Sache mit Suchen und Ersetzten wird dann sehr nervig, wenn man mehrere Dateien hat.
Mit Notepad++ zum Beispiel lässt sich Suchen und Ersetzen auch komplett auf mehrere Dateien anwenden.

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Mir gings auch eher um die Zeit. Aber ja manche Editoren können das ;)
[1] Nützliche Webdokumente für Anfänger und Fortgeschrittene
[2]Minimalbeispiel | [3]FAQ
[4]Regelwerk | [5] Knigge
Wenn nicht anderst angegeben ist mein System: texlive 2012, pdflatex, x86-64, Snow Leopard utd.
Angehöriger der Liga zur Verwendung von texdoc
texdoc mathmode koma l2picfaq l2tabu lshort-en
Achtung: Aufforderungen ein Minimalbeispiel oder mehr Erklärungen zu einer Frage zu liefern sind keine persönlichen Angriffe. Sie dienen viel mehr dazu die Kommunikation zwischen Fragendem und potentiellen Helfern zu erleichtern und zu präzisieren.


Crys
Forum-Century
Forum-Century
Beiträge: 202
Registriert: So 16. Okt 2011, 20:34
Wohnort: localhost:1337

Beitrag von Crys »

bloodworks hat geschrieben:[...] Da TeX nicht zurückschauen kann, [...]
Das ist ja nicht ganz korrekt!
Tex kann vielleicht nicht zurück schauen, aber sich Notizen machen, was bei nächsten Kompilieren geändert werden soll!
So funktioniert doch das Inhaltsverzeichnis (wenn ich das richtig verstanden hab)!? :wink:

Apfeltasche hat geschrieben:Mit Notepad++ zum Beispiel lässt sich Suchen und Ersetzen auch komplett auf mehrere Dateien anwenden.
Wenn eine Abkürzung schon ersetzt wurde, man dann aber weiter schreibt und wieder per "alle Dateien durchsuchen" die Abkürzung ersetzt, dann ist das subotimal ^^


Aber die Lösung erscheint mir akzeptabel ... dann muss man mit den Abkürzungen bis zum Schluss warten und diese erste vor Abgabe ersetzten ... mal schaun ob das hin haut!

Das Problem ist halt, dass 12 Leute an einer Studie schreiben. Bisher gibt es 36 einzelne Inhalts Dateien und das Glossar umfasst jetzt schon fast 100 Abkürzungen!
Das wäre ein Unding geworden, dass mit Word zu koordinieren :wink:


Kleine Frage zum Thema:
Wie macht man ein kleines Glossar unter einer Formel?
Es soll also direkt unter der Formel (einige) Zeichen erklärt werden.

schmendrich
Forum-Century
Forum-Century
Beiträge: 136
Registriert: Mo 2. Mär 2009, 19:18

Beitrag von schmendrich »

Crys hat geschrieben: Wenn eine Abkürzung schon ersetzt wurde, man dann aber weiter schreibt und wieder per "alle Dateien durchsuchen" die Abkürzung ersetzt, dann ist das subotimal ^^
Du kannst doch genauso gut nach allen Abkürzungen suchen, die noch nicht ausgezeichnet worden sind (regular expressions).

Im Editor VIM, funktioniert das zum Beispiel so:

:%s/\<text\>\s/\\befehl\{text\} /g

Mit diesem Kommando wird nur das Wort "text" ersetzt, wenn es allein dasteht, nicht aber "subtext", "texten", "texter"; "text" also Bestandteil eines Wortes ist.

Aus "text " wird "\befehl{text} ". Bei einem zweiten "Ersetzungsdurchgang" wird das Vorkommen von "text" in geschweiften Klammern nicht berücksichtigt.

Auf Deine Anwendung bezogen, heißt das: Du kannst getrost auch noch ein paar Abkürzungen einfügen, nachdem Du das erste mal ersetzt hast. Anders als bei den einfachen Ersetzungsfunktionen in anderen Editoren, brauchst Du keine Angst zu haben, daß Du am Ende "geschachtelte Auszeichnungen" erhälst (etwa \befehl{\befehl{text}} )

Ähnlich funktioniert sicher auch der Zeileneditor sed, aber da kenn ich mich nicht aus.

Grüße
schmendrich

Crys
Forum-Century
Forum-Century
Beiträge: 202
Registriert: So 16. Okt 2011, 20:34
Wohnort: localhost:1337

Beitrag von Crys »

Danke, aber ich kenne den Vim nicht!
Wollte mich darin jetzt auch nicht ein arbeiten ...

Ich habe es jetzt so gelöst: Alle Abkürzungen stehen in einer csv-Datei! Erste Zeile Abkürzung, 2te Ausgeschrieben und 3te die Erklärung.
Jetzt habe ich ein AutoIt Skript geschrieben, dass nach den Abkürzungen (in Zeile1 der csv-Datei) in allen tex-Dateien sucht. Dann ersetzt es alle Abkürzungen durch "\ac{#}", wenn noch nicht ersetzt!
Und es erstellt auch noch ein Abkürzungsverzeichnis aus der csv-Datei ("\begin{acronym} \acro{#}{##}{###} ...")!
War zwar nicht einfach des Macro zu schrieben, aber jetzt kann es, was ich will! :wink:

Antworten