
我過去常常用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 鏡像(
和 the 時,有時您會得到儲存在箭頭位置的)
字元。)
您可以停用鏡像,但目前看來這只能在段落之間完成。這意味著您需要小心不要影響文字(請參閱第二個文字行中的括號):
\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}