
私は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 ですべての傾斜を使用するより良い解決策が見つかるかもしれません」というpict2e
メモもあります)。.tex
答え2
特定の角度の線分の文字は、 の位置に格納されます(
。bidi は と をミラーリングするため、(
矢印の先端である の位置)
に格納された文字が取得されることがあります。)
ミラーリングを無効にすることもできますが、現時点では段落間でのみ実行できるようです。つまり、テキストに影響を与えないように注意する必要があります (2 番目のテキスト行の括弧を参照)。
\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}