请问对于这个消息错误有什么帮助吗?
! Package Listings Error: direction textdirection unknown.
我正在使用 polyglossia,在更新到 texlive 2018 后出现此错误。
我设法在序言中限制了 tcolorbox 包中的错误。以下是导致错误的简单代码:
% !TeX TS-program = xelatex
\documentclass[12pt,a4paper]{article}
\usepackage{xcolor}
\colorlet{mygray}{gray!6!white}
\usepackage[most]{tcolorbox}
\newtcolorbox{myindex}{ %somthing wrong happens here
arc=2mm,
colback=white,
}
\usepackage{fontspec}
\setmainfont[Scale=1.15]{Amiri}
\usepackage{polyglossia}
\setmainlanguage[locale=morocco]{arabic}
\begin{document}
عربي
\end{document}
答案1
更新
2018 年 9 月 15 日发布的33.2 版bidi
已解决该问题。请注意,listings
必须使用 2018 年 9 月 2 日发布的 1.7 版(或更高版本),否则该问题会再次出现。
原始答案
错误出现在辅助文件中listings-xetex-bidi.def
,其中起始代码为
\lst@Key{captiondirection}{textdirection}{%
\lstKV@SwitchCases{#1}%
{textdirection&\\%
RTL&\chardef\bidi@lst@caption@direction\@ne\\%
LTR&\chardef\bidi@lst@caption@direction\z@%
}{\PackageError{Listings}{direction #1 unknown}\@ehc}}
\lst@Key{captionscript}{textscript}{%
\lstKV@SwitchCases{#1}%
{textscript&\\%
latin&\chardef\bidi@lst@caption@script\@ne\\%
nonlatin&\chardef\bidi@lst@caption@script\z@%
}{\PackageError{Listings}{direction #1 unknown}\@ehc}}
这是错误的。\lstKV@SwitchCases
宏需要与 不同的分隔符&
;正确的代码应该是
\lst@Key{captiondirection}{textdirection}{%
\lstKV@SwitchCases{#1}%
{textdirection:\\%
RTL:\chardef\bidi@lst@caption@direction\@ne\\%
LTR:\chardef\bidi@lst@caption@direction\z@%
}{\PackageError{Listings}{direction #1 unknown}\@ehc}}
\lst@Key{captionscript}{textscript}{%
\lstKV@SwitchCases{#1}%
{textscript:\\%
latin:\chardef\bidi@lst@caption@script\@ne\\%
nonlatin:\chardef\bidi@lst@caption@script\z@%
}{\PackageError{Listings}{direction #1 unknown}\@ehc}}
请注意,:
应该用 go 代替&
。
就bidi
作者而言,语法上的变化是最近才发生的(仅仅几天),在以前的版本中,listings
分隔符是&
。请参阅https://sourceforge.net/p/persian-tex-dist/tickets/9/
事实上,显示错误的一个最小例子是
\documentclass[12pt,a4paper]{article}
\usepackage{listings}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage[locale=morocco]{arabic}
\setmainfont[Scale=1.15]{Amiri}
\begin{document}
عربي
\end{document}
它出现在您的文档中是因为加载most
选项。如果您不需要,只需避免加载它并发出tcolorbox
listings
listings
\usepackage[many]{tcolorbox}
手动加载可能缺少的库。
如果你做listings
除了复制listings-xetex-bidi.def
到您的工作目录并将的六个外观更改为&
如上所示之外,几乎不需要做太多事情:
,至少直到在分发中修复错误的代码为止bidi
。