\csname ... \endcsname funktioniert nicht mit \newfontfamily

\csname ... \endcsname funktioniert nicht mit \newfontfamily

Unten habe ich ein MWE, das mein Problem zeigt (die allgemeine Gliederung des Dokuments habe ich vondiese Antwort:

\documentclass[twoside]{scrartcl}

\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{microtype}
\usepackage{lipsum}

\newfontfamily\cyrillicfontsf{CMU Sans Serif}[Script=Cyrillic]

% What I'm trying to replace
% \newfontfamily\cyrillicfont{CMU Serif}[Script=Cyrillic]

% What I'm trying to replace it with
\newcommand\mycommand[2]{\newfontfamily\csname#1font\endcsname{#2}[Script=Cyrillic]}
\mycommand{cyrillic}{CMU Serif}

\setmainlanguage{ukrainian}

\begin{document}
\author{А.В. Тор}
\title{Великий об'єм }
\maketitle
\section{Перший}
\lipsum[1-2]
\end{document}

Das Problem hier ist, dass ich das Gefühl habe, dass das, was ich ersetzen möchte, und das, womit ich es ersetzen möchte, gleichwertig sind. Allerdings wird mir folgende Fehlermeldung angezeigt:

fontspec error: "font-not-found"
! 
! The font "c" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!............................................... 

Es scheint also, als würde nur der erste Buchstabe des Arguments verwendet cyrillic, aber das erscheint seltsam, da ich es in die \csname ... \endcsnameUmgebung einfüge. Wie kann ich das beheben?

Ich habe es auch \expandaftervor dem versucht \newcommand, aber das scheint auch nicht zu funktionieren.

Antwort1

\newcommand\mycommand[2]{\newfontfamily\csname#1font\endcsname{#2}[Script=Cyrillic]}

\newfontfamilysieht keine Befehlssequenz, sondern \csnameals erstes Argument. \expandafterhilft bei der Erstellung der BefehlssequenzVor \newfontfamilyanalysiert seine Argumente:

\newcommand\mycommand[2]{\expandafter\newfontfamily\csname#1font\endcsname{#2}[Script=Cyrillic]}

verwandte Informationen