PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abkuerzungen Package



strolch
31-05-2010, 05:52
Hallo zusammen!

Beziehen auf den Beitrage "d.h. oder d.\,h. ?" http://www.mrunix.de/forums/showthread.php?t=68345
und meinen eigenen Fragen und Problemen mit Abkuerzungen habe ueberlegt, ob man nicht alle gebraeuchlichen Abkuerzungen mal in einem Paket zusammenfassen und bereitstellen koennte.
Momentan handhabe ich es so, dass ich in meinen Texten eine kleine macros.tex einbinde in denen ich alle moeglichen, immer wiederkehrenden Dinge zusammenfasse. Darunter eben auch eine kleine Liste mit Abkuerzungen.

Sicher waere es nicht aber eleganter ein kleines Package fuer die Abkuerzungen zu haben. Ich habe dazu mal das folgende versucht:



% This is the file abkuerzungen.sty of common german abbreviations.
%
% created by strolch <@.>
%
% Version 0.0.1 (31-May-2010)

% Copyright (C) 2010-2012 strolch <@.>
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program in doc/COPYING; if not, write to the Free
% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
% MA 02110-1301 USA

\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\def\fileversion{0.0.1}
\def\filedate{2010/05/31}
\ProvidesPackage{abkuerzungen}[\filedate\space\fileversion]

\ProcessOptions

% am aufgefuhrten Ort (nicht aaO)
\newcommand{\aaO}{a.\,a.\,O.\ }
\newcommand{\AaO}{A.\,a.\,O.\ }

% ad libitum (= beliebig)
\newcommand{\adlib}{ad\ lib.\ }
\newcommand{\Adlib}{Ad\ lib.\ }

% beziehungsweise (nicht bezw.)
\newcommand{\bzw}{bzw.\ }
\newcommand{\Bzw}{Bzw.\ }

% circa (= um, etwa)
\newcommand{\ca}{ca.\ }
\newcommand{\Ca}{Ca.\ }

% confer! (= vergleiche)
\newcommand{\cf}{cf.\ }
\newcommand{\Cf}{Cf.\ }

% desgleichen
\newcommand{\dsgl}{dsgl.\ }
\newcommand{\Dsgl}{Dsgl.\ }

% das heißt
%\newcommand{\dh}{d.\,h.\ }
\newcommand{\Dh}{D.\,h.\ }

% dergleichen
\newcommand{\dgl}{dgl.\ }
\newcommand{\Dgl}{Dgl.\ }

% meines Erachtens; mit Erlaub
\newcommand{\mE}{m.\,E.\ }
\newcommand{\ME}{M.\,E.\ }

% et cetera (= und so weiter)
\newcommand{\etc}{etc.\ }
\newcommand{\Etc}{Etc.\ }

% eventuell
\newcommand{\evtl}{evtl.\ }
\newcommand{\Evtl}{Evtl.\ }

% folgende
\newcommand{\f}{f.\ }
\newcommand{\F}{F.\ }

% fortfolgende
\newcommand{\ff}{ff.\ }
\newcommand{\Ff}{Ff.\ }

% gegebenenfalls
\newcommand{\ggf}{ggf.\ }
\newcommand{\Ggf}{Ggf.\ }

% im allgemeinen
\newcommand{\iallg}{i.\,allg.\ }
\newcommand{\Iallg}{I.\,allg.\ }

% in der Fassung (nicht idF)
\newcommand{\idF}{i.\,d.\,F.\ }
\newcommand{\IdF}{I.\,d.\,F.\ }

% in der Regel
\newcommand{\idR}{i.\,d.\,R.\ }
\newcommand{\IdR}{I.\,d.\,R.\ }

% im einzelnen
\newcommand{\ie}{i.\,e.\ }
\newcommand{\Ie}{I.\,e.\ }

% Nebenbemerkung
\newcommand{\NB}{N.\,B.\ }

% Randnummer
\newcommand{\Rn}{Rn.\ }

% respektive
\newcommand{\resp}{resp.\ }
\newcommand{\Resp}{Resp.\ }

% siehe
\newcommand{\s}{s.\ }

% Seite
%\newcommand{\S}{S.\ }

% sogenannt(e)
\newcommand{\sog}{sog.\ }
\newcommand{\Sog}{Sog.\ }

% Stuck (nicht Stck.)
\newcommand{\St}{St.\ }

% und andere mehr
\newcommand{\uam}{u.\,a.\,m.\ }

% unter anderem
\newcommand{\ua}{u.\,a.\ }
\newcommand{\Ua}{U.\,a.\ }

% und ähnliches
\newcommand{\uae}{u.\,ä.\ }
\newcommand{\Uae}{U.\,ä.\ }

% unseres Erachtens
\newcommand{\uE}{u.\,E.\ }
\newcommand{\UE}{U.\,E.\ }

% unter Umstanden
\newcommand{\uU}{u.\,U.\ }
\newcommand{\UU}{U.\,U.\ }

% und so weiter
\newcommand{\usw}{usw.\ }

% und vieles andere mehr
\newcommand{\uvam}{u.\,v.\,a.\,m.\ }

% vor allem
\newcommand{\va}{v.\,a.\ }
\newcommand{\Va}{V.\,A.\ }

% vergleiche (nicht vergl.)
\newcommand{\vgl}{vgl.\,vgl.\ }
\newcommand{\Vgl}{Vgl.\,Vgl.\ }

% zum Beispiel
\newcommand{\zB}{z.\,B.\ }
\newcommand{\ZB}{Z.\,B.\ }

% zu Händen (nicht z. Hd.)
\newcommand{\zH}{z.\,H.\ }
\newcommand{\ZH}{Z.\,H.\ }

% zum Teil
\newcommand{\zT}{z.\,T.\ }
\newcommand{\ZT}{Z.\,T.\ }

% zur Zeit (nicht z. Zt.)
\newcommand{\zZ}{z.\,Z.\ }
\newcommand{\ZZ}{Z.\,Z.\ }

\endinput


und auch gleich noch ein kleine Testdatei dazu



\documentclass{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{abkuerzungen}

\begin{document}

Das ist ein Test, ob \zB die Abkürzungen \zH oder \etc sowie \uvam funtionieren.

\end{document}


Das ganze ist keineswegs vollstaendig oder ausgereift, ich wollte nur mal wissen, was ihr davon haltet und was ich noch verbessern bzw. aendern sollte.

In einen naechsten Schritt moechte ich dann uebrigens ein automaisches Abkuerzungsverzeichnis einbauen, so dass ich in meinen Hauptdokument nur noch "\Abkuerzungsverzeichnis" oder so schreiben muss und dann automatisch eine Liste aller von mir in diesem Dokument verwendeten Abkuerzungen in einem Verzeichnis ausgegeben bekomme.
(Implementierung: Wahrscheinlich ein boolean flag fuer jede Abkuerzung definieren und wenn eine Abkuerzung verwendet wird dieses flag setzen. Wenn dann die Liste der verwendeten Abkuerzungen angefordert wird, wird eine Tabelle in der nur die auf true gesetzten Abkuerzungen aufgelistet sind erzeugt.)

strolch

Syralist
31-05-2010, 08:58
Die Idee find ich nicht schlecht. Aber ich find die Variante aus http://www.ips.cs.tu-bs.de/struck/unitext/typographie.pdf noch schöner:

\newcommand{\zB}{\mbox{z.\,B.}\xspace}
Die mbox sorgt dafür, dass nicht getrennt wird und das xspace fügt den Leerraum am Ende nur ein, wenn er nötig ist.

tral
31-05-2010, 09:47
Ich find die Idee auch gut. Vielleicht könnte man xspace und mbox auch als Paket-Optionen implementieren... Und ein Befehl für das Hinzufügen neuer Abkürzungen wäre gut.

Für das Abkürzungsverzeichnis könnte man doch eins der üblichen Pakete (acronym, nomencl, ... -- ich kenn mich da nicht so aus) verwenden und innerhallb der Abkürzungs-Makros von abkuerzungen.sty die entsprechenden Einträge erzeugen. dann braucht es keine booleschen Variablen...

Christian.

strolch
31-05-2010, 15:45
Mir gefaellt die Idee ja auch, gerade weil es ja auch ein immer wieder kehrende Aufgabe ist und so haette man ein Paket, in dem die Abkuerzungen richtig gesetzt sind und das einem dann gleich noch ein Abkuerzungsverzeichnis mit nur den verwendeten Abkuerzungen liefert.

Also hier der aktuelle Stand:


% This is the file abkuerzungen.sty of german abbreviations.
%
% created by strolch <@.>
%
% Version 0.0.1 (31-May-2010)

% Copyright (C) 2010-2012 strolch <@.>
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program in doc/COPYING; if not, write to the Free
% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
% MA 02110-1301 USA

\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\def\fileversion{0.0.1}
\def\filedate{2010/05/31}
\ProvidesPackage{abkuerzungen}[\filedate\space German abbreviations \fileversion]

\usepackage{xspace}
\usepackage{ifthen}

\newboolean{@noxspace}
\setboolean{@noxspace}{false}

\DeclareOption{noxspace}{\setboolean{@noxspace}{tr ue}}
\DeclareOption*{%
\PackageWarning{abkuerzungen}{Unknown option ‘\CurrentOption’}%
}
\ProcessOptions\relax


% am aufgefuhrten Ort (nicht aaO)
\newcommand{\aaO}{\mbox{a.\,a.\,O.}\ifthenelse{\bo olean{@noxspace}}{}{\xspace}}

% ad libitum (= beliebig)
\newcommand{\adlib}{\mbox{ad\ lib.}\ifthenelse{\boolean{@noxspace}}{}{\xspace}}
\newcommand{\Adlib}{\mbox{Ad\ lib.}\ifthenelse{\boolean{@noxspace}}{}{\xspace}}

% beziehungsweise (nicht bezw.)
\newcommand{\bzw}{\mbox{bzw.}\ifthenelse{\boolean{ @noxspace}}{}{\xspace}}

% circa (= um, etwa)
\newcommand{\ca}{\mbox{ca.}\ifthenelse{\boolean{@n oxspace}}{}{\xspace}}

% confer! (= vergleiche)
\newcommand{\cf}{\mbox{cf.}\ifthenelse{\boolean{@n oxspace}}{}{\xspace}}

% desgleichen
\newcommand{\dsgl}{\mbox{dsgl.}\ifthenelse{\boolea n{@noxspace}}{}{\xspace}}

% das heißt
%\newcommand{\dh}{\mbox{d.\,h.}\ifthenelse{\boolea n{@noxspace}}{}{\xspace}}

% dergleichen
\newcommand{\dgl}{\mbox{dgl.}\ifthenelse{\boolean{ @noxspace}}{}{\xspace}}

% das ist
\newcommand{\di}{\mbox{d.\,i.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% meines Erachtens; mit Erlaub
\newcommand{\mE}{\mbox{m.\,E.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% et cetera (= und so weiter)
\newcommand{\etc}{\mbox{etc.}\ifthenelse{\boolean{ @noxspace}}{}{\xspace}}

% eventuell
\newcommand{\evtl}{\mbox{evtl.}\ifthenelse{\boolea n{@noxspace}}{}{\xspace}}

% folgende
\newcommand{\f}{\mbox{f.}\ifthenelse{\boolean{@nox space}}{}{\xspace}}

% fortfolgende
\newcommand{\ff}{\mbox{ff.}\ifthenelse{\boolean{@n oxspace}}{}{\xspace}}

% gegebenenfalls
\newcommand{\ggf}{\mbox{ggf.}\ifthenelse{\boolean{ @noxspace}}{}{\xspace}}

% im Allgemeinen
\newcommand{\iAllg}{\mbox{i.\,Allg.}\ifthenelse{\b oolean{@noxspace}}{}{\xspace}}

% im Auftrag
\newcommand{\iA}{\mbox{i.\,A.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% in der Fassung (nicht idF)
\newcommand{\idF}{\mbox{i.\,d.\,F.}\ifthenelse{\bo olean{@noxspace}}{}{\xspace}}

% in der Regel
\newcommand{\idR}{\mbox{i.\,d.\,R.}\ifthenelse{\bo olean{@noxspace}}{}{\xspace}}

% im einzelnen
\newcommand{\ie}{\mbox{i.\,e.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% id est, veraltet für: das ist, das heißt
%\newcommand{\ie}{\mbox{i.\,e.}\ifthenelse{\boolea n{@noxspace}}{}{\xspace}}

% Nebenbemerkung
\newcommand{\NB}{\mbox{N.\,B.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% Randnummer
\newcommand{\Rn}{\mbox{Rn.}\ifthenelse{\boolean{@n oxspace}}{}{\xspace}}

% respektive
\newcommand{\resp}{\mbox{resp.}\ifthenelse{\boolea n{@noxspace}}{}{\xspace}}

% siehe
\newcommand{\s}{\mbox{s.}\ifthenelse{\boolean{@nox space}}{}{\xspace}}

% Seite
%\newcommand{\S}{\mbox{S.}\ifthenelse{\boolean{@no xspace}}{}{\xspace}}

% sogenannt(e)
\newcommand{\sog}{\mbox{sog.}\ifthenelse{\boolean{ @noxspace}}{}{\xspace}}

% Stuck (nicht Stck.)
\newcommand{\St}{\mbox{St.}\ifthenelse{\boolean{@n oxspace}}{}{\xspace}}

% und andere mehr
\newcommand{\uam}{\mbox{u.\,a.\,m.}\ifthenelse{\bo olean{@noxspace}}{}{\xspace}}

% unter anderem
\newcommand{\ua}{\mbox{u.\,a.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% und ähnliches
\newcommand{\uae}{\mbox{u.\,ä.}\ifthenelse{\boolea n{@noxspace}}{}{\xspace}}

% unseres Erachtens
\newcommand{\uE}{\mbox{u.\,E.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% unter Umstanden
\newcommand{\uU}{\mbox{u.\,U.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% und so weiter
\newcommand{\usw}{\mbox{usw.}\ifthenelse{\boolean{ @noxspace}}{}{\xspace}}

% und vieles andere mehr
\newcommand{\uvam}{\mbox{u.\,v.\,a.\,m.}\ifthenels e{\boolean{@noxspace}}{}{\xspace}}

% vor allem
\newcommand{\va}{\mbox{v.\,a.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% vergleiche (nicht vergl.)
\newcommand{\vgl}{\mbox{vgl.\,vgl.}\ifthenelse{\bo olean{@noxspace}}{}{\xspace}}

% zum Beispiel
\newcommand{\zB}{\mbox{z.\,B.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% zu Händen (nicht z. Hd.)
\newcommand{\zH}{\mbox{z.\,H.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% zum Teil
\newcommand{\zT}{\mbox{z.\,T.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}

% zur Zeit (nicht z. Zt.)
\newcommand{\zZ}{\mbox{z.\,Z.}\ifthenelse{\boolean {@noxspace}}{}{\xspace}}


\endinput


und das Testfile:



\documentclass{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{abkuerzungen}
%\usepackage[noxspace]{abkuerzungen}

\begin{document}

Das ist ein Test, ob \zB die Abkürzungen \zH, \iA, \usw, \etc sowie \uvam funtionieren.

\end{document}


@Syralist:
Guter Hinweis und eine schoene Uebersicht (typographie.pdf).

@Christian:
Ich habe mal versuchsweise xspace als globale Paket-Optionen implementiert aber wahrscheinlich muss es lokal als optionaler Parameter bei jeder Abkuerzung eingefuegt werden.
- "üblichen Pakete (acronym, nomencl, ..." bin leider noch nicht dazu gekommen mir die Pakete anzusehen, sind fuer mich nicht üblich, kenne mich damit also auch nicht so aus.

Fuer Anregungen, Vorschläge, Erweiterungen und technische Hinweise bin ich weiterhin offen und dankbar ...

Strolch

u_fischer
31-05-2010, 16:59
Nun, wie du an \dh und \S ja schon gemerkt hast, ist bei derart kurzen Befehlsnamen die Gefahr einer Kollision mit einem bereits in Benutzung ziemlich groß. Auch wenn es mehr Tipparbeit bedeutet, ist der Ansatz von Paketen wie glossaries (\gls{zb}, \gls{ia} etc) auf Dauer flexibler und unproblematischer.

tral
31-05-2010, 20:46
Hallo,

du könntest es etwas vereinfachen:

[CODE]
\newcommand{\@xspace}{\ifthenelse{\boolean{@noxspa ce}}{}{\xspace}}
[\CODE]

und dann hinter jede Abkürzung einfach \@xspace...

Christian.

PS. Das Argument von Ulrike mit der Überladung existierender Befehle stimmt natürlich... Wenn man es natürlich in eine einheitlichen Befehl packt (\abk{zb}), könnte man vielleicht noch einfacher einen generalisierten Befehl schreiben, der einen String parst, nach jedem Punkt ein "\," einfügt, eine mbox drumherum packt und ein \xspace anfügt. Der würde also ohne Liste von Abkürzungen auskommen...

Christian.

lockstep
31-05-2010, 21:38
Wenn man es natürlich in eine einheitlichen Befehl packt (\abk{zb}), könnte man vielleicht noch einfacher einen generalisierten Befehl schreiben, der einen String parst, nach jedem Punkt ein "\," einfügt, eine mbox drumherum packt und ein \xspace anfügt. Der würde also ohne Liste von Abkürzungen auskommen...

Dieser einheitliche Befehl müsste in deinem Beispiel entweder \abk{z.B.} oder (unter der Annahme, dass nach dem letzten Buchstaben immer ein Punkt zu setzten ist) \abk{z.B} lauten. Das sind zehn bzw. neun Zeichen - z.\,B. dagegen nur sechs. (Eine mbox ist im konkreten Fall unnötig, da am Spatium keine Trennung erlaubt ist.)

lockstep

strolch
01-06-2010, 06:37
hallo zusammen,

erstmal danke fuer eure hilfe und nun im einzelnen zu euren vorschlaegen:

@ulrike
ja, habe ich gemerkt und hatte auch schon die idee eines generellen befehlst. daher habe ich in dieser version einen befehlt "\abk{name}" eingefuegt. als zweite alternative, unschoen aber funktioniert, habe ich jeder abkuerzung ein großes "A" vorangestellt, so gibt es erstmal keinen konflikte mehr. eine abkuerzung kann nun mit "\A<name>" oder durch "\abk{name}" erzeugt.

@Christian
Zitat: "könnte man vielleicht noch einfacher einen generalisierten Befehl schreiben, der einen String parst, nach jedem Punkt ein "\," einfügt, eine mbox drumherum packt und ein \xspace anfügt. Der würde also ohne Liste von Abkürzungen auskommen..."
gefaellt mir nicht so, wie lockstep es schon richtig angemerkt hat, wuerde dies viel mehr schreibarbeit sein. dazu kommt noch, das so der benutzer genau wissen muss wie abgekuerzt werden muss. (gut muss er bei mir auch, da er die jeweilige abkuerzung ueber die abkuerzung selbst aber ohne punkte anspricht).
das kleine bisschen mehr an schreibarbeit mit dem befehl "\abk{}" wird am ende hoffentlich durch das automatisch erzeugte abkuerzungsverzeichnis wieder gut gemacht.
Zital: "(Eine mbox ist im konkreten Fall unnötig, da am Spatium keine Trennung erlaubt ist.)"
verstehe ich dich richtig, ich kann die mbox ueberall entfernen?


hier die aktuelle version:


% This is the file abkuerzungen.sty of german abbreviations.
%
% created by strolch <@.>
% and the friendly help of the mrunix.de forum, especially: Syralist, u_fischer, tral, lockstep, ...
%
% Version 0.0.1 (31-May-2010)

% Copyright (C) 2010-2012 strolch <@.>
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program in doc/COPYING; if not, write to the Free
% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
% MA 02110-1301 USA

\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\def\fileversion{0.0.1}
\def\filedate{2010/05/31}
\ProvidesPackage{abkuerzungen}[\filedate\space German abbreviations \fileversion]

\usepackage{ifthen}
\usepackage{xspace}
%\usepackage{xstring}

\newboolean{@noxspace}
\setboolean{@noxspace}{false}

\DeclareOption{noxspace}{\setboolean{@noxspace}{tr ue}}
\DeclareOption*{%
\PackageWarning{abkuerzungen}{Unknown option ‘\CurrentOption’}%
}
\ProcessOptions\relax

\newcommand{\@isXspace}{\ifthenelse{\boolean{@noxs pace}}{}{\xspace}}

\newcommand{\abk}[1] {
\ifthenelse{\equal{#1}{aaO}}{\AaaO}{}
\ifthenelse{\equal{#1}{adlib}}{\Aadlib}{}
\ifthenelse{\equal{#1}{Adlib}}{\AAdlib}{}
\ifthenelse{\equal{#1}{bzw}}{\Abzw}{}
\ifthenelse{\equal{#1}{ca}}{\Aca}{}
\ifthenelse{\equal{#1}{cf}}{\Acf}{}
\ifthenelse{\equal{#1}{dsgl}}{\Adsgl}{}
\ifthenelse{\equal{#1}{dh}}{\Adh}{}
\ifthenelse{\equal{#1}{dgl}}{\Adgl}{}
\ifthenelse{\equal{#1}{di}}{\Adi}{}
\ifthenelse{\equal{#1}{mE}}{\AmE}{}
\ifthenelse{\equal{#1}{etc}}{\Aetc}{}
\ifthenelse{\equal{#1}{evtl}}{\Aevtl}{}
\ifthenelse{\equal{#1}{f}}{\Af}{}
\ifthenelse{\equal{#1}{ff}}{\Aff}{}
\ifthenelse{\equal{#1}{Aggf}}{\Aggf}{}
\ifthenelse{\equal{#1}{iAllg}}{\AiAllg}{}
\ifthenelse{\equal{#1}{iA}}{\AiA}{}
\ifthenelse{\equal{#1}{idF}}{\AidF}{}
\ifthenelse{\equal{#1}{idR}}{\AidR}{}
\ifthenelse{\equal{#1}{ie}}{\Aie}{}
\ifthenelse{\equal{#1}{NB}}{\ANB}{}
\ifthenelse{\equal{#1}{Rn}}{\ARn}{}
\ifthenelse{\equal{#1}{resp}}{\Aresp}{}
\ifthenelse{\equal{#1}{s}}{\As}{}
\ifthenelse{\equal{#1}{S}}{\AS}{}
\ifthenelse{\equal{#1}{sog}}{\Asog}{}
\ifthenelse{\equal{#1}{St}}{\ASt}{}
\ifthenelse{\equal{#1}{uam}}{\Auam}{}
\ifthenelse{\equal{#1}{ua}}{\Aua}{}
\ifthenelse{\equal{#1}{uae}}{\Auae}{}
\ifthenelse{\equal{#1}{uE}}{\AuE}{}
\ifthenelse{\equal{#1}{uU}}{\AuU}{}
\ifthenelse{\equal{#1}{usw}}{\Ausw}{}
\ifthenelse{\equal{#1}{uvam}}{\Auvam}{}
\ifthenelse{\equal{#1}{va}}{\Ava}{}
\ifthenelse{\equal{#1}{vgl}}{\Avgl}{}
\ifthenelse{\equal{#1}{zB}}{\AzB}{}
\ifthenelse{\equal{#1}{zH}}{\AzH}{}
\ifthenelse{\equal{#1}{zT}}{\AzT}{}
\ifthenelse{\equal{#1}{zZ}}{\AzZ}{}
}


% am aufgefuhrten Ort (nicht aaO)
\newcommand{\AaaO}{\mbox{a.\,a.\,O.}\@isXspace}

% ad libitum (= beliebig)
\newcommand{\Aadlib}{\mbox{ad\ lib.}\@isXspace}
\newcommand{\AAdlib}{\mbox{Ad\ lib.}\@isXspace}

% beziehungsweise (nicht bezw.)
\newcommand{\Abzw}{\mbox{bzw.}\@isXspace}

% circa (= um, etwa)
\newcommand{\Aca}{\mbox{ca.}\@isXspace}

% confer! (= vergleiche)
\newcommand{\Acf}{\mbox{cf.}\@isXspace}

% desgleichen
\newcommand{\Adsgl}{\mbox{dsgl.}\@isXspace}

% das heißt
\newcommand{\Adh}{\mbox{d.\,h.}\@isXspace}

% dergleichen
\newcommand{\Adgl}{\mbox{dgl.}\@isXspace}

% das ist
\newcommand{\Adi}{\mbox{d.\,i.}\@isXspace}

% meines Erachtens; mit Erlaub
\newcommand{\AmE}{\mbox{m.\,E.}\@isXspace}

% et cetera (= und so weiter)
\newcommand{\Aetc}{\mbox{etc.}\@isXspace}

% eventuell
\newcommand{\Aevtl}{\mbox{evtl.}\@isXspace}

% folgende
\newcommand{\Af}{\mbox{f.}\@isXspace}

% fortfolgende
\newcommand{\Aff}{\mbox{ff.}\@isXspace}

% gegebenenfalls
\newcommand{\Aggf}{\mbox{ggf.}\@isXspace}

% im Allgemeinen
\newcommand{\AiAllg}{\mbox{i.\,Allg.}\@isXspace}

% im Auftrag
\newcommand{\AiA}{\mbox{i.\,A.}\@isXspace}

% in der Fassung (nicht idF)
\newcommand{\AidF}{\mbox{i.\,d.\,F.}\@isXspace}

% in der Regel
\newcommand{\AidR}{\mbox{i.\,d.\,R.}\@isXspace}

% im einzelnen
\newcommand{\Aie}{\mbox{i.\,e.}\@isXspace}

% id est, veraltet für: das ist, das heißt
%\newcommand{\Aie}{\mbox{i.\,e.}\@isXspace}

% Nebenbemerkung
\newcommand{\ANB}{\mbox{N.\,B.}\@isXspace}

% Randnummer
\newcommand{\ARn}{\mbox{Rn.}\@isXspace}

% respektive
\newcommand{\Aresp}{\mbox{resp.}\@isXspace}

% siehe
\newcommand{\As}{\mbox{s.}\@isXspace}

% Seite
\newcommand{\AS}{\mbox{S.}\@isXspace}

% sogenannt(e)
\newcommand{\Asog}{\mbox{sog.}\@isXspace}

% Stuck (nicht Stck.)
\newcommand{\ASt}{\mbox{St.}\@isXspace}

% und andere mehr
\newcommand{\Auam}{\mbox{u.\,a.\,m.}\@isXspace}

% unter anderem
\newcommand{\Aua}{\mbox{u.\,a.}\@isXspace}

% und ähnliches
\newcommand{\Auae}{\mbox{u.\,ä.}\@isXspace}

% unseres Erachtens
\newcommand{\AuE}{\mbox{u.\,E.}\@isXspace}

% unter Umstanden
\newcommand{\AuU}{\mbox{u.\,U.}\@isXspace}

% und so weiter
\newcommand{\Ausw}{\mbox{usw.}\@isXspace}

% und vieles andere mehr
\newcommand{\Auvam}{\mbox{u.\,v.\,a.\,m.}\@isXspac e}

% vor allem
\newcommand{\Ava}{\mbox{v.\,a.}\@isXspace}

% vergleiche (nicht vergl.)
\newcommand{\Avgl}{\mbox{vgl.\,vgl.}\@isXspace}

% zum Beispiel
\newcommand{\AzB}{\mbox{z.\,B.}\@isXspace}

% zu Händen (nicht z. Hd.)
\newcommand{\AzH}{\mbox{z.\,H.}\@isXspace}

% zum Teil
\newcommand{\AzT}{\mbox{z.\,T.}\@isXspace}

% zur Zeit (nicht z. Zt.)
\newcommand{\AzZ}{\mbox{z.\,Z.}\@isXspace}


\endinput


und noch das testfiel:


\documentclass{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{abkuerzungen}
%\usepackage[noxspace]{abkuerzungen}

\begin{document}

Das ist ein Test, ob \AzB die Abkürzungen \AzH, \AiA, \Ausw, \Aetc sowie \Auvam funtionieren.
In dieser Version funktionieren auch \AS und \Adh nur habe ich dafuer leider ein zusaetzliches ''\textbackslash A'' an den Anfang jeder Abkuerzung eingefuegt. Zugegeben, es ist etwas unschoen aber laeuft.

Wem das allerdings nicht gefaellt, fuer den gibt es jetzt auch einen generellen Befehlt. ''\textbackslash abk{}''. Hier also noch einmal der Text von oben mit dem neuen Befehl.


Das ist ein Test, ob \abk{zB} die Abkürzungen \abk{zH}, \abk{iA}, \abk{usw}, \abk{etc} sowie \abk{uvam} funtionieren.
In dieser Version funktionieren auch \abk{S} und \abk{dh} nur habe ich dafuer einen \ldots

\end{document}


nur leider gibt der mit dem neuen befehlt "\abk{name}" noch ein problem. es wird vor und hinter der abkuerzung im text ein recht großer leerraum erzeugt. hat jemand eine idee wieso?

wenn dies behoben ist, dann kann endlich das automatisch erzeugte abkuerzungsverzeichnis eingebaut werden. ideen dazu sind herzlich willkommen.

strolch

tral
01-06-2010, 09:22
nur leider gibt der mit dem neuen befehlt "\abk{name}" noch ein problem. es wird vor und hinter der abkuerzung im text ein recht großer leerraum erzeugt. hat jemand eine idee wieso?


Vielleicht wegen den Zeilenumbrüchen. Probier mal:



\newcommand{\abk}[1] {%
\ifthenelse{\equal{#1}{aaO}}{\AaaO}{}%
\ifthenelse{\equal{#1}{adlib}}{\Aadlib}{}%
...
}


Christian.

u_fischer
01-06-2010, 10:12
\newcommand{\abk}[1] {
\ifthenelse{\equal{#1}{aaO}}{\AaaO}{}
\ifthenelse{\equal{#1}{adlib}}{\Aadlib}{}
\ifthenelse{\equal{#1}{Adlib}}{\AAdlib}{}
\ifthenelse{\equal{#1}{bzw}}{\Abzw}{}
\ifthenelse{\equal{#1}{ca}}{\Aca}{}
....

Nicht so. Dann dauert die Abarbeitung ja ewig.


\documentclass{article}%
\makeatletter
\newcommand\strolch@abk@zb{zb}
\newcommand\strolch@abk@ia{iA}
%usw.
\makeatother
\newcommand\abk[1]{\csname strolch@abk@#1\endcsname}

\begin{document}%
\abk{zb}

\abk{ia}
\end{document}

lockstep
01-06-2010, 11:11
Zital: "(Eine mbox ist im konkreten Fall unnötig, da am Spatium keine Trennung erlaubt ist.)"
verstehe ich dich richtig, ich kann die mbox ueberall entfernen?

Die mbox würde helfen, wenn eine Abkürzung aufgrund ihrer Länge (bei Verwendung von ngerman mindestens 4 Zeichen) und ihres Trennmusters geteilt werden dürfte. Ich will nicht ausschließen, dass es solche Fälle gibt, aber ich habe noch keinen gefunden. (Außer natürlich Akronyme - bei Wörtern wie UNESCO kann eine mbox sehr praktisch sein.)

Ach ja: einfacher als \mbox{ad\ lib.} ist ad~lib. (Und der Schwesterbefehl \mbox{Ad\ lib.} ist unnötig, da Abkürzungen am Anfang eines Satzes ausgeschrieben werden sollten.)

lockstep

strolch
01-06-2010, 14:36
besten danke, eure vorschlaege sind umgesetzt:



Vielleicht wegen den Zeilenumbrüchen. Probier mal: ...
Christian.
ja, du hattest recht. ist aber nun hinfaellig, da das problem mit ulrikes vorschlag nicht mehr auftritt.




Nicht so. Dann dauert die Abarbeitung ja ewig.
Christian.
danke, das ist genau einer der hinweise, die ich brauche. was latex programmierung angeht, bin ich eben doch noch ein anfaenger.

@lockstep
die mboxen sind entfernt.

also hier das package


% This is the file abkuerzungen.sty of german acronyms.
%
% created by strolch <@.>
% and the friendly help of the mrunix.de forum,
% especially: Syralist, u_fischer, tral, lockstep, ...
% Version 0.0.1 (31-May-2010)

% Copyright (C) 2010-2012 strolch <@.>
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program in doc/COPYING; if not, write to the Free
% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
% MA 02110-1301 USA

\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\def\fileversion{0.0.1}
\def\filedate{2010/05/31}
\ProvidesPackage{abkuerzungen}[\filedate\space German acronyms \fileversion]

\usepackage{ifthen}
\usepackage{xspace}

\newboolean{@noxspace}
\setboolean{@noxspace}{false}

\DeclareOption{noxspace}{\setboolean{@noxspace}{tr ue}}
\DeclareOption*{%
\PackageWarning{abkuerzungen}{Unknown option ‘\CurrentOption’}%
}
\ProcessOptions\relax

\newcommand{\@isXspace}{\ifthenelse{\boolean{@noxs pace}}{}{\xspace}}

\newcommand\abk[1]{\csname strolch@abk@#1\endcsname}

\makeatletter
% am aufgefuhrten Ort (nicht aaO)
\newcommand\strolch@abk@AaaO{a.\,a.\,O.\@isXspace}
% ad libitum (= beliebig)
\newcommand\strolch@abk@adlib{ad~lib.\@isXspace}
% beziehungsweise (nicht bezw.)
\newcommand\strolch@abk@bzw{bzw.\@isXspace}
% circa (= um, etwa)
\newcommand\strolch@abk@ca{ca.\@isXspace}
% confer! (= vergleiche)
\newcommand\strolch@abk@cf{cf.\@isXspace}
% desgleichen
\newcommand\strolch@abk@dsgl{dsgl.\@isXspace}
% das heißt
\newcommand\strolch@abk@dh{d.\,h.\@isXspace}
% dergleichen
\newcommand\strolch@abk@dgl{dgl.\@isXspace}
% das ist
\newcommand\strolch@abk@di{d.\,i.\@isXspace}
% meines Erachtens; mit Erlaub
\newcommand\strolch@abk@mE{m.\,E.\@isXspace}
% et cetera (= und so weiter)
\newcommand\strolch@abk@etc{etc.\@isXspace}
% eventuell
\newcommand\strolch@abk@evtl{evtl.\@isXspace}
% folgende
\newcommand\strolch@abk@f{f.\@isXspace}
% fortfolgende
\newcommand\strolch@abk@ff{ff.\@isXspace}
% gegebenenfalls
\newcommand\strolch@abk@ggf{ggf.\@isXspace}
% im Allgemeinen
\newcommand\strolch@abk@iAllg{i.\,Allg.\@isXspace}
% im Auftrag
\newcommand\strolch@abk@iA{i.\,A.\@isXspace}
% in der Fassung (nicht idF)
\newcommand\strolch@abk@idF{i.\,d.\,F.\@isXspace}
% in der Regel
\newcommand\strolch@abk@idR{i.\,d.\,R.\@isXspace}
% im einzelnen; id est, veraltet für: das ist, das heißt
\newcommand\strolch@abk@ie{i.\,e.\@isXspace}
% Nebenbemerkung
\newcommand\strolch@abk@NB{N.\,B.\@isXspace}
% Randnummer
\newcommand\strolch@abk@Rn{Rn.\@isXspace}
% respektive
\newcommand\strolch@abk@resp{resp.\@isXspace}
% siehe
\newcommand\strolch@abk@s{s.\@isXspace}
% Seite
\newcommand\strolch@abk@S{S.\@isXspace}
% sogenannt(e)
\newcommand\strolch@abk@sog{sog.\@isXspace}
% Stuck (nicht Stck.)
\newcommand\strolch@abk@St{St.\@isXspace}
% und andere mehr
\newcommand\strolch@abk@uam{u.\,a.\,m.\@isXspace}
% unter anderem
\newcommand\strolch@abk@ua{u.\,a.\@isXspace}
% und ähnliches
\newcommand\strolch@abk@uae{u.\,ä.\@isXspace}
% unseres Erachtens
\newcommand\strolch@abk@uE{u.\,E.\@isXspace}
% unter Umstanden
\newcommand\strolch@abk@uU{u.\,U.\@isXspace}
% und so weiter
\newcommand\strolch@abk@usw{usw.\@isXspace}
% und vieles andere mehr
\newcommand\strolch@abk@uvam{u.\,v.\,a.\,m.\@isXsp ace}
% vor allem
\newcommand\strolch@abk@va{v.\,a.\@isXspace}
% vergleiche (nicht vergl.)
\newcommand\strolch@abk@vgl{vgl.\,vgl.\@isXspace}
% zum Beispiel
\newcommand\strolch@abk@zB{z.\,B.\@isXspace}
% zu Händen (nicht z. Hd.)
\newcommand\strolch@abk@zH{z.\,H.\@isXspace}
% zum Teil
\newcommand\strolch@abk@zT{z.\,T.\@isXspace}
% zur Zeit (nicht z. Zt.)
\newcommand\strolch@abk@zZ{z.\,Z.\@isXspace}
\makeatother


\makeatletter
\newcommand{\listofacronyms}{
\section{Abkürzungen}
\begin{description}
\item[\strolch@abk@zB] zum Beispiel
\item[\strolch@abk@zH] zu Händen
\item[\strolch@abk@zT] zum Teil
\item[\strolch@abk@zZ] zur Zeit
\end{description}
\makeatother
}


\endinput


und das testfile:


\documentclass{scrartcl}
\usepackage[ngerman]{babel}

%\usepackage{abkuerzungen}
\usepackage[noxspace]{abkuerzungen}

\begin{document}
\section{Test}
Das ist ein Test, ob \abk{zB} die Abkürzungen \abk{zH}, \abk{iA}, \abk{usw}, \abk{etc} sowie \abk{uvam} funtionieren und so wie es \abk{zZ} aussieht \ldots

\listofacronyms

\end{document}


neu in dieser version ist, das es den befehl "listofacronyms" gibt, der spaeter mal eine liste der benutzten abkuerzungen ausgeben soll. momentan werden nur ein paar beispielabkuerzungen ausgegeben. bevor ich jede abkuerzung mit einem flag versehe und dieses dann bei der erstellung der uebersicht abfrage, ob diese abkuerzung benutzt wurde, so wuerde ich es jetzt mache, wollte ich doch lieber erst mal euch fragen, wie ich es besser machen koennte.
ich freue mich schon auf eure antworten.

strolch

tral
01-06-2010, 14:56
Kleine Anmerkung: \makeatletter (und \makeatother) brauchst du in einem .sty-File nicht...

Christian.

lockstep
01-06-2010, 15:16
Ersetze im sty-file \usepackage{whatever} durch \RequirePackage{whatever}.

lockstep

u_fischer
01-06-2010, 15:53
neu in dieser version ist, das es den befehl "listofacronyms" gibt, der spaeter mal eine liste der benutzten abkuerzungen ausgeben soll. momentan werden nur ein paar beispielabkuerzungen ausgegeben. bevor ich jede abkuerzung mit einem flag versehe und dieses dann bei der erstellung der uebersicht abfrage, ob diese abkuerzung benutzt wurde, so wuerde ich es jetzt mache, wollte ich doch lieber erst mal euch fragen, wie ich es besser machen koennte.


\documentclass{article}%
\usepackage[ansinew]{inputenc}
\makeatletter
\newcommand\strolch@abk@zb{zB}
\newcommand\strolch@abk@zbdesc{zum Beispiel}
\newcommand\strolch@abk@ia{iA}
\newcommand\strolch@abk@iadesc{im Auftrag}
%usw.

\newcommand\abk[1]{%
\ifcsname strolch@abk@#1@used\endcsname
\else
\addcontentsline{loa}{acron}{%
\protect\makebox[2.6cm][l]{\csname strolch@abk@#1\endcsname}%
\csname strolch@abk@#1desc\endcsname}%
\expandafter\gdef\csname strolch@abk@#1@used\endcsname{}%
\fi
\csname strolch@abk@#1\endcsname}

\newcommand{\listofacronyms}{%
\section*{Abkürzungen}
\@starttoc{loa}}

\newcommand\l@acron[2]{\par\noindent #1, #2}
\makeatother
\begin{document}%
\abk{zb}

\abk{ia}

\newpage

\abk{zb}

\listofacronyms
\end{document}

Wobei du dir vielleicht doch langsam mal Pakete wie acronym oder glossaries anschauen solltest, bevor du das Rad komplett neu erfindest.

strolch
02-06-2010, 06:29
Wobei du dir vielleicht doch langsam mal Pakete wie acronym oder glossaries anschauen solltest, bevor du das Rad komplett neu erfindest.


ok, habe's kapiert, ich hoere ja schon auf ...
dann war es halt eine kleine lehrstunde fuer mich und durch deine klasse antworten habe ich, wie schon oefters, viel dazu gelernt. danke.

das kleine bisschen neue an diesem paket, das durch die vordefinierten abkuerzungen sichergestellt ist, das sie richtige gesetzt sind, lohnt der restlichen aufwand wohl nicht.

also bis zum naechsten mal
strolch

u_fischer
02-06-2010, 09:37
ok, habe's kapiert, ich hoere ja schon auf ...

Das meinte ich nicht ;-). Aber du solltest dir Gedanken machen, was eigentlich dein Ziel ist.

Wenn du eine Sammlung von gängigen deutschen Abkürzungen haben willst, wäre es am besten, die nötigen Definitionen für glossaries zusammen zu stellen.

Wenn du einfach mal was üben willst (und Pakete zu entwickeln macht Spaß und man kann viel lernen), dann mach weiter. Aber benutze andere Pakete als Quelle für Ideen und Code. Da stecken z.T. langjährige Erfahrungen drin, das kannst du dir nicht alles selbst ausdenken.

strolch
09-06-2010, 16:47
Das meinte ich nicht ;-). Aber du solltest dir Gedanken machen, was eigentlich dein Ziel ist.

... "und womit du deine 'kostbare' zeit verbringst.", an der es mir gerade etwas fehlt.



Wenn du einfach mal was üben willst (und Pakete zu entwickeln macht Spaß und man kann viel lernen), dann mach weiter. ...
ja, das war mehr oder weniger meine absicht. wobei es jetzt ja fast schon benutzbar ist. (eine sortierung der liste waere noch nett ;-) )
ich werde also noch weiter machen

danke