.png)
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 ab
sollten beispielsweise X = 1
und 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 \StrRight
vielleicht etwas, das als einzelnes Zeichen betrachtet wird? Wie behebe ich das?
Antwort1
Dies funktioniert nur durch Erweiterung und kann daher überall verwendet werden, wo eine Zahl erwartet wird.
Ich zeige zwei Versionen, eine mit klassischem Latex2e \@firstoftwo
und \expandafter
und 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}