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

관련 정보