Konvertieren von String-Koordinaten in Zahlen-Koordinaten (zB ab -> 1 und 2)

Konvertieren von String-Koordinaten in Zahlen-Koordinaten (zB ab -> 1 und 2)

Ich versuche, Steine ​​auf einem Gitter zu zeichnen, und meine Makro-API bietet dafür zwei Möglichkeiten: Entweder Sie geben die X- und Y-Koordinaten an oder Sie geben eine Zeichenfolge mit den Koordinaten ein. So absollten beispielsweise X = 1und lauten Y = 2.

Gefolgtdiese Antwort von @PhelypeOleinik, ich versuche jetzt Folgendes:

\documentclass{article}

\usepackage{xstring}

\newcommand\makeFromAlph[1]{ 
  \number\numexpr`#1-`a\relax % I should probably lowercase `#1` first...
}
% I've also tried this version:
% \ExplSyntaxOn
%   \NewExpandableDocumentCommand \makeFromAlph { m }
%     { \int_eval:n { \int_from_alph:n {#1} - 1 } }
% \ExplSyntaxOff

\begin{document}
  \StrRight{ab}{1} % This works
  \makeFromAlph{\StrRight{ab}{1}} % But this doesn't
\end{document}

Aber ich bekomme diese Fehlermeldung:

Improper alphabetic constant.
<to be read again> 

Weiß jemand, warum? Ergibt die Ausgabe \StrRightvielleicht etwas, das als einzelnes Zeichen betrachtet wird? Wie behebe ich das?

Antwort1

Bildbeschreibung hier eingeben

Dies funktioniert nur durch Erweiterung und kann daher überall verwendet werden, wo eine Zahl erwartet wird.

Ich zeige zwei Versionen, eine mit klassischem Latex2e \@firstoftwound \expandafterund zweitens eine einfachere L3-Version.

\documentclass{article}

\makeatletter
\newcommand\foo[1]{%
  The first number is \the\numexpr \expandafter`\@firstoftwo#1-96\relax,
  The second number is \the\numexpr \expandafter`\@secondoftwo#1-96\relax.
  }
  \makeatother

  \ExplSyntaxOn
  \cs_generate_variant:Nn \int_from_alph:n {e}
  \newcommand\foob[1]{
    \int_from_alph:e{\use_i:nn#1}, ~\int_from_alph:e{\use_ii:nn#1}.
    }
  \ExplSyntaxOff
\begin{document}

\foo{ab}

\foob{ab}

\end{document}

verwandte Informationen