首先是编译良好的代码
% !TEX TS-program = xelatex
\documentclass[11pt,a4paper]{article}
\usepackage{xgreek}
\usepackage{unicode-math}
\setmainfont{Linux Libertine O}
\begin{document}
\newcounter{n}%
\setcounter{n}{0}%
\makeatletter
\@for\liste:={{a=1},{b=2},{c=-2}}\do{%
\stepcounter{n}%
\begingroup
\nogreekalph
\global\expandafter\let\csname arg\alph{n}\endcsname\liste
\endgroup
}%
\makeatother
$\arga $ ; $\argb$ ; $\argc$
Αυτό είναι μια υπο-επικεφαλίδα
\end{document}
现在我想使用polyglossia
。使用下面的代码,会出现几个错误
% !TEX TS-program = xelatex
\documentclass[11pt,a4paper]{article}
\usepackage{polyglossia}
\setmainlanguage{french}
\setotherlanguage[variant=polytonic]{greek}
\usepackage{xgreek}
\usepackage{unicode-math}
\setmainfont{Linux Libertine O}
\begin{document}
\newcounter{n}%
\setcounter{n}{0}%
\makeatletter
\@for\liste:={{a=1},{b=2},{c=-2}}\do{%
\stepcounter{n}%
\begingroup
\nogreekalph
\global\expandafter\let\csname arg\alph{n}\endcsname\liste
\endgroup
}%
\makeatother
$\arga $ ; $\argb$ ; $\argc$
Αυτό είναι μια υπο-επικεφαλίδα
\end{document}
如何更改以下代码以避免这些错误
\nogreekalph
\global\expandafter\let\csname arg\alph{n}\endcsname\liste
问题与babel
答案1
这种循环的 expl3 版本可能如下所示。它假设您定义一个新命令。如果您想重新定义现有命令,则必须调整代码。
\documentclass[11pt,a4paper]{article}
\usepackage{polyglossia}
\setmainlanguage{french}
\setotherlanguage[variant=polytonic]{greek}
\usepackage{xgreek}
\usepackage{unicode-math}
\setmainfont{Linux Libertine O}
\begin{document}
\ExplSyntaxOn
\clist_set:Nn \l_tmpa_clist { {a=1},{b=2},{c=-2} }
\int_zero:N\l_tmpa_int
\clist_map_inline:Nn \l_tmpa_clist
{
\int_incr:N \l_tmpa_int
\cs_new:cpn { arg \int_to_alph:n { \l_tmpa_int } } { #1 }
}
\ExplSyntaxOff
$\arga $ ; $\argb$ ; $\argc$
Αυτό είναι μια υπο-επικεφαλίδα
\end{document}