아래에 내 문제를 보여주는 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]}