Text im Mathematikmodus: Fettdruck übernehmen, aber nicht Kursivdruck

Text im Mathematikmodus: Fettdruck übernehmen, aber nicht Kursivdruck

Kann ich ein Makro definieren, \foodas 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}}

\textupwü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 \textupauch 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

\mboxWenn 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}

Bildbeschreibung hier eingeben

Und wie Jukka in seinem Kommentar anmerkt, gibt es eine einfachere Definition (die amsmathdas Paket erfordert, aber nicht erfordert scalerel), die auch mit der mathematischen Größe skaliert:

\newcommand{\foo}{\text{\upshape\sffamily foo}}

verwandte Informationen