我以前用babel
希伯来语写文档,我使用该cancel
包在方程式中的术语上画线以进行取消。到目前为止,这一直运行良好。最近,我尝试取消一个术语,但它没有在该术语上画一条线,而是画了一堆箭头:
相关代码如下:
\documentclass[a4paper, 12pt]{article}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[bidi=basic, layout=tabular, headfoot=hebrew]{babel}
% For Hebrew
\babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
\babelprovide[import]{english}
% For English
% \babelprovide[main, import]{english}
% \babelprovide[import, alph=letters, Alph=letters]{hebrew}
\babelfont[hebrew]{rm}{David CLM}
\babelfont[hebrew]{sf}{David CLM}
\usepackage[hyperref, table, x11names]{xcolor}
\usepackage{amsmath}
\usepackage[thicklines]{cancel}
% Cancel settings
\renewcommand{\CancelColor}{\color{red}}
\begin{document}
\[ \cancel{x} + 1 - \cancel{x} = 1 \]
\[ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
} \]
\end{document}
奇怪的是,它有时会这样做,有时会很好地画出一条线,如图所示。我无法弄清楚它何时工作以及何时绘制那些奇怪的箭头的模式。在玩了一会儿之后,我发现问题可能是因为希伯来语是主要语言。当我更改设置babel
以将英语作为主要语言时,问题就消失了:
英语的变化:
\usepackage[bidi=basic, layout=tabular, headfoot=english]{babel}
% For Hebrew
% \babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
% \babelprovide[import]{english}
% For English
\babelprovide[main, import]{english}
\babelprovide[import, alph=letters, Alph=letters]{hebrew}
有人能解释一下为什么该\cancel
命令有时在希伯来语中有效,有时无效,以及我该如何解决这个问题?
答案1
虽然我已经提出了一个问题,我知道图形元素和数学元素本质上是 LTR(或者更确切地说,它们不应该根据方向而改变),这是有问题的,因为许多命令和包必须修补(幸运的是,luatex
事情比 更简单xetex
)。为此,\babelsublr
提供了宏,它通常(但并非总是)可能会有所帮助。在这种情况下,以下更改将打印预期结果:
\[ \babelsublr{ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
} }\]
编辑。注意babel
,如其手册中所述,支持picture
带有的环境pict2e
。遗憾的是,\cancel
不使用该picture
环境,而是模拟其原始行为,因此pict2e
没有效果。(文件中甚至有关于后者的注释.tex
:“有时可能会找到使用 pict2e 的所有斜率的更好解决方案”)。
答案2
特定角度的线段的字符存储在 的位置(
。由于 bidi 镜像(
和 ,因此)
您有时会将字符存储在)
位置,即箭头。
您可以禁用镜像,但目前似乎只能在段落之间执行此操作。这意味着您需要小心不要影响文本(参见第二行文本中的括号):
\documentclass[a4paper, 12pt]{article}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[bidi=basic, layout=tabular, headfoot=hebrew]{babel}
% For Hebrew
\babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
\babelprovide[import]{english}
% For English
% \babelprovide[main, import]{english}
% \babelprovide[import, alph=letters, Alph=letters]{hebrew}
\babelfont[hebrew]{rm}{David CLM}
\babelfont[hebrew]{sf}{David CLM}
\usepackage[hyperref, table, x11names]{xcolor}
\usepackage{amsmath}
\usepackage[thicklines]{cancel}
% Cancel settings
\renewcommand{\CancelColor}{\color{red}}
\begin{document}
אלף (בית) גימל;
\babeladjust{bidi.mirroring=off}
אלף (בית) גימל;
\[ \cancel{x} + 1 - \cancel{x} = 1 \]
\[ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
} \]
\end{document}
答案3
当与 一起使用时,模式似乎picture
被破坏了。bidi
babel
最小的例子。
\documentclass[a4paper, 12pt]{article}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[bidi=basic, layout=tabular, headfoot=hebrew]{babel}
% For Hebrew
\babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
\babelprovide[import]{english}
% For English
% \babelprovide[main, import]{english}
% \babelprovide[import, alph=letters, Alph=letters]{hebrew}
\babelfont[hebrew]{rm}{David CLM}
\babelfont[hebrew]{sf}{David CLM}
\begin{document}
XXX\begin{picture}(10,10)
\line(6,1){33}
\end{picture}
\selectlanguage{english}
XXX\begin{picture}(10,10)
\line(6,1){33}
\end{picture}
\end{document}
可能的解决方法(如果使用,可能会对边界框产生不良影响\cancelto
)。
\documentclass[a4paper, 12pt]{article}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[bidi=basic, layout=tabular, headfoot=hebrew]{babel}
\usepackage[table, x11names]{xcolor}
\usepackage{amsmath}
\usepackage{pict2e}
\let\OriginalPictureCmds\relax
\usepackage[thicklines]{cancel}
% For Hebrew
\babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
\babelprovide[import]{english}
% For English
% \babelprovide[main, import]{english}
% \babelprovide[import, alph=letters, Alph=letters]{hebrew}
\babelfont[hebrew]{rm}{David CLM}
\babelfont[hebrew]{sf}{David CLM}
% Cancel settings
\renewcommand{\CancelColor}{\color{red}}
\begin{document}
\[ \cancel{x} + 1 - \cancel{x+y+z+t} = 1 \]
\[ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
}
\]
\end{document}
基本上,我们认为cancel
扩展picture
模式是好的。
另一方面,如果您使用,则不需要做任何事情bidi=basic-r
,但这可能会产生其他副作用。
\documentclass[a4paper, 12pt]{article}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[bidi=basic-r, layout=tabular, headfoot=hebrew]{babel}
\usepackage[table, x11names]{xcolor}
\usepackage{amsmath}
\usepackage[thicklines]{cancel}
% For Hebrew
\babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
\babelprovide[import]{english}
% For English
% \babelprovide[main, import]{english}
% \babelprovide[import, alph=letters, Alph=letters]{hebrew}
\babelfont[hebrew]{rm}{David CLM}
\babelfont[hebrew]{sf}{David CLM}
% Cancel settings
\renewcommand{\CancelColor}{\color{red}}
\begin{document}
\[
\cancel{x} + 1 - \cancel{x+y+z+t} = 1 \]
\[ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
}
\]
\end{document}