Einheitliches Makro für fette, aufrechte Vektoren in Latein und Griechisch

Einheitliches Makro für fette, aufrechte Vektoren in Latein und Griechisch

Ich verwende pdfLaTeX und möchtealleVektoren setze ich in fetter, aufrechter Schrift. Leider sind, je nachdem, ob das Symbol lateinisch, kleingriechisch oder großgriechisch ist, unterschiedliche Befehle erforderlich, um es fett und aufrecht zu machen. Ich möchte in der Lage sein, ein einzelnes Makro zu definieren – sagen wir \vector–, das unabhängig vom Argument das tut, was ich will, und ich nicht darüber nachdenken muss:

\vector{a}       =>  \mathbf{a}
\vector{\alpha}  =>  \boldsymbol{\upalpha}
\vector{\Omega}  =>  \boldsymbol{\Omega}

Diese beliebte Fragebefasst sich mitmanchedieses Problems, aber die Lösungen dort haben immer noch die griechischen Vektoren in Kleinbuchstaben in fetter Kursivschrift, nicht in fetter Hochschrift. Viele andere Fragen berühren dieses Problem auf verschiedene Weise, aber ich konnte keine endgültige Antwort auf genau diese Variante finden. Vielleicht lautet die Antwort „das geht nicht“ – aber das habe ich auch nicht definitiv gesehen.


Bearbeitet \Alpha, das nicht existiert, in \Omega.

Antwort1

Eine Modifikation meiner Antwort aufAutomatisch prüfen, ob ein mathematisches Zeichen griechisch oder lateinisch istsollte tun:

\documentclass{article}
\usepackage{xparse}
\usepackage{bm,upgreek}

\ExplSyntaxOn
\NewDocumentCommand\Vector{m}
 {
  \commexo_vector:n { #1 }
 }

\cs_new_protected:Npn \commexo_vector:n #1
 {
  \tl_map_inline:nn { #1 }
   {
    \commexo_vector_inner:n { ##1 }
   }
 }

\cs_new_protected:Npn \commexo_vector_inner:n #1
 {
  \tl_if_in:VnTF \g_commexo_latin_tl { #1 }
   {% we check whether the argument is a Latin letter
    \mathbf { #1 } % a Latin letter
   }
   {% if not a Latin letter, we check if it's an uppercase Greek letter
    \tl_if_in:VnTF \g_commexo_ucgreek_tl { #1 }
     {
      \bm { #1 } % a Greek uppercase letter
     }
     {% if not, we check if it's a lowercase Greek letter
      \tl_if_in:VnTF \g_commexo_lcgreek_tl { #1 }
       {
        \commexo_makeboldupright:n { #1 }
       }
       {% none of the above, just issue #1
        #1 % fall back
       }
     }
   }
 }

\cs_new_protected:Npn \commexo_makeboldupright:n #1
 {
  \bm { \use:c { up \cs_to_str:N #1 } }
 }

\tl_new:N \g_commexo_latin_tl
\tl_new:N \g_commexo_ucgreek_tl
\tl_new:N \g_commexo_lcgreek_tl
\tl_gset:Nn \g_commexo_latin_tl
 {
  ABCDEFGHIJKLMNOPQRSTUVWXYZ
  abcdefghijklmnopqrstuvwxyz
 }
\tl_gset:Nn \g_commexo_ucgreek_tl
 {
  \Gamma\Delta\Theta\Lambda\Pi\Sigma\Upsilon\Phi\Chi\Psi\Omega
 }
\tl_gset:Nn \g_commexo_lcgreek_tl
 {
  \alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa
  \lambda\mu\nu\xi\pi\rho\sigma\tau\upsilon\phi\chi\psi\omega
  \varepsilon\vartheta\varpi\varphi\varsigma\varrho
 }

\ExplSyntaxOff
\begin{document}
$\Vector{X}\Vector{\Lambda}\Vector{\alpha}\Vector{\beta}$

$\Vector{X\Lambda}$
\end{document}

Bildbeschreibung hier eingeben

Was bedeutet " \commexo_makeboldupright:ndo"? Es nimmt die Eingabe, also "say" \alpha, entfernt den Backslash aus dem Namen \cs_to_str:Nund erstellt die Steuersequenz \upalphaüber \use:c": "say" \use:c{upalpha}ist gleichbedeutend mit "type" \upalpha.

Antwort2

Da es für andere von Nutzen sein könnte, erwähne ich die Lösung, die ich derzeit verwende: In einem Dokument mit vielen griechischen Vektoren ändere ich die Dokumentschriftart von Computer Modern zu Charter und verwende das isomathPaket, sodass \mathbfes bei griechischen Zeichen wie erwartet funktioniert:

\documentclass{article}

\usepackage[charter,cal=cmcal]{mathdesign}
\usepackage[OMLmathrm,OMLmathbf]{isomath}
\newcommand{\vect}[1]{\mathbf{#1}}    

\begin{document}
    $\a$, $\omega$, $\Omega$

    $\vect a$, $\vect\omega$, $\vect\Omega$
\end{document}

fettes aufrechtes a, Omega, Omega

Ich habe die Frage gepostet, weil ich Computer Modern Charter vorziehe, aber da die Lösung in Computer Modern anscheinend zumindest ziemlich kompliziert ist, findet vielleicht jemand anders diese vergleichsweise einfachere Lösung nützlich.

verwandte Informationen