Convertir caracteres latinos a griegos

Convertir caracteres latinos a griegos

¿Existe algún paquete o método sencillo para generar caracteres griegos a partir de sus homólogos romanos?

Como, por ejemplo:

\greek{a}generaría\alpha

\greek{b}generaría\beta

\greek{B}generaría \Beta,

Y así sucesivamente... Soy consciente de que dicha correspondencia no sería un mapa uno a uno, pero podría ser lo suficientemente cercano.

Mi necesidad de esto está relacionada con un conjunto de comandos que tengo en mi doctorado. documento para asegurar un uso compatible (siempre igual) de determinados símbolos en algunas categorías. Por ejemplo, tengo algunos comandos como:

\newcommand{\setname}[1]{\ensuremath{\uppercase{#1}}}
\newcommand{\matrixname}[1]{\ensuremath{\mathbf{\uppercase{#1}}}}
\newcommand{\vectorname}[1]{\ensuremath{\vec{\lowercase{#1}}}}
\newcommand{\scalarname}[1]{\ensuremath{\lowercase{#1}}}

Por lo tanto, si alguna vez necesito definir un conjunto S, puedo usarlo \setname{S}y se garantiza que el conjunto sea una letra mayúscula con formato matemático (como cursiva). Si por alguna razón, más adelante, necesito cambiar el formato de los conjuntos para usar minúsculas, solo tendré que cambiar la \setnamedefinición del comando.

Ahora necesito un nuevo comando para un tipo de conjunto específico no vacío: un alfabeto. Quiero utilizar caracteres griegos en mayúsculas para definir el nombre de un alfabeto. Entonces me gustaría crear un comando como:

\newcommand{\alphabetname}[1]{\ensuremath{\greek{\uppercase{#1}}}}

Luego, para definir un alfabeto Σ, podría escribir:

\alphabetname{s}y obtener Σ.

Respuesta1

Aquí está la codificación estándar en LaTeX para ingresar caracteres griegos con caracteres latinos.

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\ucgreek}{m}
 {
  \str_case:nn { #1 }
   {
    {A}{\mathrm{A}}
    {B}{\mathrm{B}}
    {C}{\Sigma}
    {D}{\Delta}
    {E}{\mathrm{E}}
    {F}{\Phi}
    {G}{\Gamma}
    {H}{\mathrm{H}}
    {I}{\mathrm{I}}
    {J}{\Theta}
    {K}{\mathrm{K}}
    {L}{\Lambda}
    {M}{\mathrm{M}}
    {N}{\mathrm{N}}
    {O}{\mathrm{O}}
    {P}{\Pi}
    {Q}{\mathrm{X}}
    {R}{\mathrm{P}}
    {S}{\Sigma}
    {T}{\mathrm{T}}
    {U}{\Upsilon}
    %{V}{}
    {W}{\Omega}
    {X}{\Xi}
    {Y}{\Psi}
    {Z}{\mathrm{Z}}
   }
 }
\NewDocumentCommand{\lcgreek}{m}
 {
  \str_case:nn { #1 }
   {
    {a}{\alpha}
    {b}{\beta}
    {c}{\varsigma}
    {d}{\delta}
    {e}{\varepsilon}
    {f}{\varphi}
    {g}{\gamma}
    {h}{\eta}
    {i}{\iota}
    {j}{\vartheta}
    {k}{\kappa}
    {l}{\lambda}
    {m}{\mu}
    {n}{\nu}
    {o}{o}
    {p}{\pi}
    {q}{\chi}
    {r}{\rho}
    {s}{\sigma}
    {t}{\tau}
    {u}{\upsilon}
    %{v}{}
    {w}{\omega}
    {x}{\xi}
    {y}{\psi}
    {z}{\zeta}
   }
 }
\ExplSyntaxOff

\newcommand{\alphabetname}[1]{\uppercase{\ucgreek{#1}}}

\begin{document}

The alphabet $\alphabetname{S}$ is important.

\end{document}

Respuesta2

Una forma es simplemente elegir el carácter que desea basándose en el código del carácter romano correspondiente como el siguiente (el código está incompleto, solo se implementan las primeras cuatro letras; además, es posible que desee utilizar otra correspondencia, \gammapor gejemplo):

\documentclass{article}

\newcounter{tmpgreek}
\newcommand{\greek}[1]{%
  \setcounter{tmpgreek}{`#1}
  \addtocounter{tmpgreek}{-`a}
  \ifcase\value{tmpgreek}
    \alpha\or\beta\or\gamma\or\delta
  \fi
  \setcounter{tmpgreek}{`#1}
  \addtocounter{tmpgreek}{-`A}
  \ifcase\value{tmpgreek}
    \mathrm A\or \mathrm B\or\Gamma\or\Delta
  \fi
}

\begin{document}
$\greek{a}$
$\greek{b}$
$\greek{c}$
$\greek{d}$

$\greek{A}$
$\greek{B}$
$\greek{C}$
$\greek{D}$
\end{document}

información relacionada