Wie kann ich einen Befehl in Abhängigkeit des übergebenen Arguments umdefinieren?
Ich möchte den Befehl `\mathbb` in Abhängigkeit des Arguments umdefinieren:
`\mathbb{N}` ---> `\vmathbb{N}`
`\mathbb{Q}` ---> `\vmathbb{Q}`
usw.
Das ganze soll für eine gewisse Anzahl von Buchstaben erfolgen, z.B. für N, Q, R. Für alle anderen Buchstaben soll der Befehl so bleiben, wie er ist.
Ich kann leider kein lauffähiges Beispiel erstellen, deswegen als Pseudobeispiel:
\documentclass[12pt]{beamer}
\usepackage{libertine}
\usepackage[libertine,liby,slantedGreek]{newtxmath}
\usepackage{ifthen}
%%%% Pseudocode
\renewcommand{\mathbb}[1]{%
if (#1 = N) or (#1 = Q) or (#1 = R) {\vmathbb{#1}}
else {\mathbb{#1}}
}
\begin{document}
\[1\in \mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q} \subset \mathbb{R}\]
\end{document}
**Ergänzung der Frage:**
Ich habe die Antwort von Henri genommen und möchte die Sache nun für `\mathds` statt `\mathbb` umsetzen:
\documentclass{article}
\usepackage{dsfont} % defines \mathds
\usepackage{letltxmacro}
\usepackage{xparse}
\ExplSyntaxOn
% Save the definition of \mathds
\LetLtxMacro \dsfont_mathds:n \mathds
% Redeclare \mathbb
\RenewDocumentCommand \mathds { m }
{
\str_case:nnTF { #1 }
{ % if #1 matches N,Q,R use \vmathbb
{ N } { }
{ Q } { }
{ R } { }
}
{
#1 % hier soll nur der Buchstabe ohne Formatierung ausgegeben werden
}
{ % else use saved \mathbb
\dsfont_mathds:n { #1 }
}
}
\ExplSyntaxOff
\begin{document}
\[1\in \mathds{N} \subset \mathds{Z} \subset \mathds{Q} \subset \mathds{R}\]
\end{document}
Das klappt. Wenn ich nun aber die letzte Zeile zweimal schreibe, kommt ein Fehler:
> Use of \reserved@a doesn't match its
> definition. \[1\in \mathds{N} \subset
> \mathds{Z}
\documentclass{article}
\usepackage{dsfont} % defines \mathds
\usepackage{letltxmacro}
\usepackage{xparse}
\ExplSyntaxOn
% Save the definition of \mathds
\LetLtxMacro \dsfont_mathds:n \mathds
% Redeclare \mathbb
\RenewDocumentCommand \mathds { m }
{
\str_case:nnTF { #1 }
{ % if #1 matches N,Q,R use \vmathbb
{ N } { }
{ Q } { }
{ R } { }
}
{
#1 % hier soll nur der Buchstabe ohne Formatierung ausgegeben werden
}
{ % else use saved \mathbb
\dsfont_mathds:n { #1 }
}
}
\ExplSyntaxOff
\begin{document}
\[1\in \mathds{N} \subset \mathds{Z} \subset \mathds{Q} \subset \mathds{R}\]
\[1\in \mathds{N} \subset \mathds{Z} \subset \mathds{Q} \subset \mathds{R}\]
\end{document}