\csname ... \endcsname は \newfontfamily では動作しません

\csname ... \endcsname は \newfontfamily では動作しません

以下に私の問題を示すMWEを示します(一般的な文書の概要は以下から入手しました)この答え:

\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}

ここでの問題は、置き換えようとしているものと置き換えようとしているものが同等であるように感じられることです。しかし、次のエラーが発生します。

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

つまり、引数の最初の文字だけを取得しているようですcyrillicが、それを環境に配置しているので奇妙に思えます\csname ... \endcsname。これを修正するにはどうすればよいでしょうか?

\expandafterの前にも試してみました\newcommandが、それもうまくいかないようです。

答え1

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

\newfontfamilyコマンドシーケンスは表示されませんが、\csname最初の引数として表示されます。 \expandafterコマンドシーケンスを作成することで役立ちます前に \newfontfamily引数を解析します:

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

関連情報