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 ... \endcsname
Umgebung einfüge. Wie kann ich das beheben?
Ich habe es auch \expandafter
vor dem versucht \newcommand
, aber das scheint auch nicht zu funktionieren.
Antwort1
\newcommand\mycommand[2]{\newfontfamily\csname#1font\endcsname{#2}[Script=Cyrillic]}
\newfontfamily
sieht keine Befehlssequenz, sondern \csname
als erstes Argument.
\expandafter
hilft bei der Erstellung der BefehlssequenzVor \newfontfamily
analysiert seine Argumente:
\newcommand\mycommand[2]{\expandafter\newfontfamily\csname#1font\endcsname{#2}[Script=Cyrillic]}