\if@Latin 在 bidi v20.0 中未定义

\if@Latin 在 bidi v20.0 中未定义

来自bidi手册:

\if@Latin在任何使用拉丁字体的环境中都是真实的,而在任何使用 RTL 字体的环境中都是错误的。

我有bidi版本 20.0 和一个如下的简单示例:

\documentclass{article}
\usepackage{bidi}
\begin{document}
This is typeset by \textsf{bidi} package, \bidiversion, \bididate.
\makeatletter
\if@Latin yes \else no \fi
\makeatother
\end{document}

无法编译并产生错误:

! Undefined control sequence.
l.6 \if@Latin

请注意,许多命令都依赖于此布尔测试,例如\lr来自xepersian包的命令。另一个不起作用的示例:

\documentclass{article}
\usepackage{xepersian}
\settextfont{Amiri} 
\begin{document}
\lr{hello world}
\end{document}

答案1

我认为这个问题是由于测试名称的改变造成的,参考:https://github.com/vafa/bidi/blob/master/bidi.dtx

您会发现, 20.0 版本的手册中并未提及此更改\newif\if@nonlatin,而且使用此布尔测试的软件包也没有做必要的更改。\newif\if@Latinbidixepersian

随着 bidi 版本 20.0 的推出,MWE 变为:

\documentclass{article}
\usepackage{bidi}

\begin{document}
This is typeset by \textsf{bidi} package, \bidiversion, \bididate.
\makeatletter
\if@nonlatin no \else yes \fi
\makeatother
\end{document} 

在此处输入图片描述

答案2

\if@Latin(旧布尔值,现已删除)和\if@nonlatin布尔值都是内部的,用户不应使用它们。相反,请使用和\iflatin\ifnonlatin

\documentclass{article}
\usepackage{bidi}

\begin{document}
This is typeset by \textsf{bidi} package, \bidiversion, \bididate.

\iflatin{We are in latin mode}{We are not in latin mode}

\ifnonlatin{We are not in latin mode}{We are in latin mode}
\end{document} 

在此处输入图片描述

相关内容