Ich hätte gerne einen Befehl ([optionale] Argumente denkbar) wie \centeroid, der mir
'Schwerpunkt' oder 'centeriod' ausgibt, je nachdem, ob german oder english als globale Sprachoption eingestellt wurde.

Ist das möglich?

alt text

Öffne in Overleaf
\documentclass[ngerman, fontsize=9pt, paper=a5]{scrreprt}% english
\usepackage{amsmath}

\begin{document}
\minisec{Falls ngerman}
\newcommand\centeroid{Schwerpunkt}
\newcommand\mul{\cdot}
\centeroid, $a \mul b$

\minisec{Falls english}
\renewcommand\centeroid{centeroid}
\renewcommand\mul{\times}
\centeroid, $a \mul b$
\end{document}

gefragt 28 Mai '19, 18:34

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 28 Mai '19, 18:37


Anstatt den Befehl herausfinden zu lassen, in welcher Sprache er sich befindet, kannst Du auch die Sprachumschaltung den Befehl ändern lassen. So funktioniert die Lokalisierung mit babel.

Siehe z.B. auch https://tex.stackexchange.com/q/193448/35864 und https://texwelt.de/blog/internationalisierung-oder-wie-stelle-ich-ubersetzungen-in-meinem-paket-bereit/

Die großen zwei Methoden sind zum einen die babel-Methode, bei der die Redefinitionen zu \captions<Sprache> hinzugefügt werden, und zum anderen die KOMA-Script-Methode, bei der der eigene Befehl \providecaptionname genutzt wird.

babel/polyglossia

Öffne in Overleaf
\documentclass[english,ngerman]{scrreprt}
\usepackage{babel}
\usepackage{amsmath}

% Um sicher zu sein, dass die Befehle nicht schon existieren
\newcommand*{\centroid}{\PackageError{cis}{No translation for \string\centroid}}
\newcommand*{\mul}{\PackageError{cis}{No translation for \string\mul}}

\addto\captionsngerman{%
  \renewcommand*{\centroid}{Schwerpunkt}%
  \renewcommand*{\mul}{\cdot}%
}

\addto\captionsenglish{%
  \renewcommand*{\centroid}{centroid}%
  \renewcommand*{\mul}{\times}%
}

\begin{document}
\minisec{deutsch}
\centroid, $a \mul b$

\selectlanguage{english}
\minisec{english}
\centroid, $a \mul b$
\end{document}

KOMA-Script

Öffne in Overleaf
\documentclass[english,ngerman]{scrreprt}
\usepackage{babel}
\usepackage{amsmath}

% Um sicher zu sein, dass die Befehle nicht schon existieren
\newcommand*{\centroid}{\PackageError{cis}{No translation for \string\centroid}}
\newcommand*{\mul}{\PackageError{cis}{No translation for \string\mul}}

\providecaptionname{ngerman}{\centroid}{Schwerpunkt}
\providecaptionname{ngerman}{\mul}{\cdot}

\providecaptionname{english}{\centroid}{centroid}
\providecaptionname{english}{\mul}{\times}

\begin{document}
\minisec{deutsch}
\centroid, $a \mul b$

\selectlanguage{english}
\minisec{english}
\centroid, $a \mul b$
\end{document}

Die Pakete translator und translations wären noch zu erwähnen, wenn es um Übersetzungen nach einem ähnlichen Schema geht. tracklang und iflang könnten dabei helfen, etwas komfortabler die aktuelle Sprache abzufragen.

Permanenter link

beantwortet 28 Mai '19, 21:32

moewe's gravatar image

moewe
3.7k36
Akzeptiert-Rate: 42%

bearbeitet 28 Mai '19, 21:43

Ey, wieso wird mein Name immer in diesen Befehlen verwendet?! Ähm, ja also sehr professionell gelöst. Vielleicht lässt sich das für eine tabellenartige Verallgemeinerung verwenden: https://texwelt.de/wissen/fragen/24893/liste-sprachabhangiger-befehle

(28 Mai '19, 23:02) cis

alt text

Öffne in Overleaf
\documentclass[ngerman, fontsize=9pt, paper=a5]{scrreprt}% english % ngerman
\usepackage[]{babel}
\usepackage{amsmath}

% Sprachabhängiger Befehl
\newcommand\centeroid{\ifnum\language=0 centeroid\else Schwerpunkt\fi}
\newcommand\mul{\ifnum\language=0\times\else\cdot\fi}
\begin{document}
Sprachnummer: \the\language

\ifnum\language=0 english (0) \else ngerman (33) \fi

\minisec{german}
\centeroid, $a \mul b$

\minisec{english}
\foreignlanguage{english}{\centeroid, $a \mul b$}

\end{document}
Permanenter link

beantwortet 28 Mai '19, 18:52

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×13

gestellte Frage: 28 Mai '19, 18:34

Frage wurde gesehen: 5,478 Mal

zuletzt geändert: 28 Mai '19, 23:02