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

Связанный контент