Kann ich ein Makro definieren, \foo
das Folgendes $\foo$
erzeugt:
- fette serifenlose Schrift „foo“, wenn der umgebende Text fett ist
- andernfalls normale serifenlose Schrift „foo“.
Insbesondere sollte "foo" niemals gesetzt werden inKursivschrift.
MWE, das nicht ganz funktioniert:
\documentclass[a4paper]{article}
\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\newcommand{\foo}{\textsf{foo}}
\begin{document}
\section{This should be bold: $\foo$, \boldmath$2^\foo$}
This should be normal: $\foo$, $2^\foo$.
\begin{theorem}This should be normal: $\foo$, $2^\foo$.\end{theorem}
\end{document}
Hier bekomme ich schrägen Text in der Theorem-Umgebung; ansonsten sieht es gut aus. Wenn ich z. B. versuche:
\newcommand{\foo}{\textnormal{\textsf{foo}}}
dann ist es immer in Normalschrift, nicht fett.
Kann ich die Kursivschrift irgendwie einfach „ausschalten“, ohne die Fettschrift auszuschalten?
Antwort1
Sie können der Schriftartspezifikation eine weitere Ebene hinzufügen für \foo
:
\newcommand{\foo}{\textsf{\upshape foo}}
\textup
würde auch funktionieren, erfordert aber die „Argument“-Form \textup{foo}
. Beide sind in „einfachem“ Latex definiert, daher werden keine zusätzlichen Pakete benötigt.
bearbeiten:wie Jukka in einem Kommentar anmerkte, ist dies die beste aller Möglichkeiten:
\text{\upshape\sffamily foo}
Die Größe wird bei Verwendung in Tief- oder Hochstellungen richtig angepasst und eine (bedeutungslose) Schriftwarnung wird vermieden, die bei dieser Verwendung sowohl von als \textup
auch von ausgegeben wird.\upshape
Bearbeitung 2: Bernard bietet eine Variante für Tipp-Minimalisten an, die ebenfalls funktioniert:
\textup{\sffamily foo}
Antwort2
Sie können verwenden \textsf{\textup{foo}}
. Aber es sieht seltsam aus, dass Sie Ihren Befehl immer in der Mathematik verwenden. In diesem Kontext würde ich verwenden \mathsf
:
\documentclass[a4paper]{article}
\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\newcommand{\foomath}{\mathsf{foomath}}
\newcommand\foo{\textsf{\textup{foo}}}
\begin{document}
\section{This should be bold: \mathversion{bold}$\foo \foomath$}
This should be normal: $\foo\foomath$.
\begin{theorem}This should be normal: $\foo\foomath$.\end{theorem}
\end{document}
Antwort3
\mbox
Wenn Sie es in ein mit einfügen \upshape
, wird die Kursivschrift entfernt. Es wird jedoch nicht so wie es ist auf tiefgestellte mathematische Stile und dergleichen skaliert.
\documentclass[a4paper]{article}
\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\newcommand{\foo}{\mbox{\upshape\textsf{foo}}}
\begin{document}
\section{This should be bold: $\foo$}
This should be normal: $\foo$.
\begin{theorem}This should be normal: $\foo$. still italic here\end{theorem}
\end{document}
Mit ein wenig zusätzlicher Arbeit (und unter Berücksichtigung von Josephs Vorschlag) kann es jedoch auf die folgende mathematische Größe skaliert werden:
\documentclass[a4paper]{article}
\usepackage{amsmath,amsthm,scalerel}
\newtheorem{theorem}{Theorem}
\newcommand{\foo}{\scaleto{\mbox{\upshape\sffamily foo}}{1.6\LMex}}
\begin{document}
\section{This should be bold: $\foo$}
This should be normal: $\foo$ and $\foo_{\foo}$.
\begin{theorem}This should be normal: $\foo$. still italic here\end{theorem}
\end{document}
Und wie Jukka in seinem Kommentar anmerkt, gibt es eine einfachere Definition (die amsmath
das Paket erfordert, aber nicht erfordert scalerel
), die auch mit der mathematischen Größe skaliert:
\newcommand{\foo}{\text{\upshape\sffamily foo}}