Sprachenabhängige Befehle

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


slowfox
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Sa 28. Feb 2009, 15:56

Sprachenabhängige Befehle

Beitrag von slowfox »

Ich schreibe einen zweisprachigen Text. Verschiedene Begriffe möchte ich durch Befehle verfügbar machen. Ich möchte in beiden Sprachen den gleichen Befehl verwenden, die Ausgabe soll aber an die jeweilige Sprache angepasst sein. Das Paket babel bietet alles, was ich dazu benötige. Nun habe ich auf diesem Wege zwei Lösungen entwickelt und hätte gerne eine Einschätzung, welche davon ich eher bei mir implementieren sollte. (Anmerkung: diese eigenen Befehle sollen auch tw. in der bib-Datei verwendet werden.)
\documentclass[english, ngerman]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{babel}

\newcommand{\diss}{}
  \addto\extrasngerman{\renewcommand{\diss}{Dissertation}}
  \addto\extrasenglish{\renewcommand{\diss}{PhD-thesis}}

\newcommand{\norm}{%
  \iflanguage{ngerman}{\def\normname{Norm}}{}%
  \iflanguage{english}{\def\normname{Standard}}{}%
  \normname}

\begin{document}

{\selectlanguage{english}\diss} / {\selectlanguage{ngerman}\diss}

{\selectlanguage{english}\norm} / {\selectlanguage{ngerman}\norm}

\end{document}

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Die zweite Lösung kann ich nicht empfehlen, das dabei das spätere Hinzufügen von weiteren Sprachen unnötig kompliziert wird. Ich würde allerdings eine dritte Lösung empfehlen, die auch mit anderen Sprachpaketen als babel (beispielsweise mit dem ollen ngerman-Paket) funktioniert:
\documentclass{scrartcl}

%\usepackage[utf8]{inputenc}% brauchen wir in dem Fall gar nicht.
\usepackage[T1]{fontenc}

\usepackage[ngerman,english]{babel}
\newcaptionname{english}{\dissname}{PhD-thesis}%
\newcaptionname{ngerman}{\dissname}{Dissertation}%
\begin{document}
\languagename: \dissname, \selectlanguage{ngerman}\languagename: \dissname
\end{document}
Wenn man noch ein \AtBeginDocument im die \newcaptionname-Anweisungen baut, funktioniert das auch noch unabhängig davon, ob das Sprachpaket vorher oder nachher geladen wird.

Näheres zu \newcaptionname ist der KOMA-Script-Anleitung zu entnehmen.

slowfox
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Sa 28. Feb 2009, 15:56

Beitrag von slowfox »

Danke Markus! An KOMA-Bordmittel habe ich garnicht gedacht, habe mich irgendwie nur mit Babel diesbezüglich beschäftigt.

Ciao, Marco

Antworten