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, 12:34

cis's gravatar image

cis
9.3k21204336
Akzeptiert: 62%

bearbeitet 28 Mai, 12: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, 15:32

moewe's gravatar image

moewe
60124

bearbeitet 28 Mai, 15: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, 17: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, 12:52

cis's gravatar image

cis
9.3k21204336

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×12

Frage gestellt: 28 Mai, 12:34

Frage wurde angeschaut: 256 Mal

Zuletzt aktualisiert: 28 Mai, 17:02