我想在使用 enumitem 和 polyglossia 时创建自定义列表。
latexmk main
正在运行
main.tex
:
\documentclass[12pt, a4paper]{report}
\usepackage{polyglossia}
\setmainlanguage{czech}
\usepackage{enumitem}
\newlist{enumfp}{enumerate}{1}
\setlist[enumfp]{label=\textbf{FP-\arabic*},ref=FP-\arabic*}
\begin{document}
\begin{enumfp}
\item A
\item B
\item C
\end{enumfp}
\end{document}
产生此输出
! Missing number, treated as zero.
<to be read again>
\c@-
l.10 \item A
?
! Missing number, treated as zero.
<to be read again>
\c@-
l.11 \item B
?
! Missing number, treated as zero.
<to be read again>
\c@-
l.12 \item C
?
[1] (main.aux) )
但是,只要我删除 polyglossia 包并设置 mainlanguage,文档就可以毫无问题地生成。
.latexmkrc
:
$pdf_mode = 5;
$xelatex = "xelatex --shell-escape %O %S";
$xdvipdfmx = "xdvipdfmx -z 0 -o %D %O %S";
$dvi_mode = 0;
$postscript_mode = 0;
$hash_calc_ignore_pattern{'timestamp'} = '^';
答案1
捷克语文件包含代码,该代码会提前查看连字符以实现特殊的连字符规则。使用 XeLaTeX 时,这相当脆弱(您的代码使用 luaLaTeX 运行)。
您可以在连字符和以下 \arabic 之间添加一些内容来保护连字符:
\setlist[enumfp]{label=\textbf{FP-{}\arabic*},ref=FP-\arabic*}
或者
\setlist[enumfp]{label=\textbf{FP-\relax\arabic*},ref=FP-\arabic*}
答案2
问题在于-
标签内的连字符。Polyglossia 将其替换为其他内容。使用hyphenat
包\hyp{}
解决了该问题。
\documentclass[12pt, a4paper]{report}
\usepackage{polyglossia}
\setmainlanguage{czech}
\usepackage{hyphenat}
\usepackage{enumitem}
\newlist{enumfp}{enumerate}{1}
\setlist[enumfp]{label=\textbf{FP\hyp{}\arabic*},ref=FP\hyp{}\arabic*}
\begin{document}
\begin{enumfp}
\item A
\item B
\item C
\end{enumfp}
\end{document}