
Normalerweise babel
schreibe ich Dokumente auf Hebräisch und verwende das cancel
Paket, um Linien auf Terme in einer Gleichung zu zeichnen, um sie zu streichen. Bis jetzt hat das gut funktioniert. Kürzlich habe ich versucht, einen Term zu streichen, und anstatt eine Linie über den Term zu zeichnen, wurden eine Reihe von Pfeilen gezeichnet:
Hier ist der relevante Code:
\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}
Das Merkwürdige ist, dass es das manchmal tut und manchmal eine Linie einwandfrei zeichnet, wie Sie auf dem Bild sehen können. Ich konnte das Muster nicht herausfinden, wann es funktioniert und wann es diese seltsamen Pfeile zeichnet. Nachdem ich damit herumgespielt hatte, stellte ich fest, dass das Problem wahrscheinlich daran liegt, dass Hebräisch die Hauptsprache ist. Wenn ich die babel
Einstellungen ändere, um Englisch zur Hauptsprache zu machen, verschwindet das Problem:
Die Änderungen für Englisch:
\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}
Kann mir jemand erklären, warum der \cancel
Befehl auf Hebräisch manchmal funktioniert und manchmal nicht, und wie ich das beheben kann?
Antwort1
Obwohl ichhat ein Problem geöffnet, mir ist bewusst, dass grafische und mathematische Elemente, die von Natur aus LTR sind (oder sich vielmehr nicht in Abhängigkeit von der Richtung ändern sollten), problematisch sind, da viele Befehle und Pakete gepatcht werden müssen (glücklicherweise luatex
sind die Dinge mit einfacher als mit xetex
). Aus diesem Grund wird das Makro \babelsublr
bereitgestellt, das oft, aber nicht immer, helfen kann. In diesem Fall druckt die folgende Änderung das erwartete Ergebnis aus:
\[ \babelsublr{ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
} }\]
Bearbeiten.Beachten Sie babel
, dass laut Handbuch die picture
Umgebung mit unterstützt wird pict2e
. Leider \cancel
verwendet die picture
Umgebung nicht, sondern emuliert stattdessen das ursprüngliche Verhalten, sodass dies pict2e
keine Auswirkungen hat. (In der Datei gibt es sogar einen Hinweis .tex
zu Letzterem: „Vielleicht finden Sie irgendwann eine bessere Lösung, die alle Steigungen mit pict2e verwendet.“)
Antwort2
Das Zeichen für das Liniensegment in einem bestimmten Winkel wird an der Position von gespeichert (
. Da Bidi (
und spiegeln )
, erhalten Sie manchmal das an der )
Position gespeicherte Zeichen, das eine Pfeilspitze ist.
Sie können die Spiegelung deaktivieren, aber es sieht so aus, als ob dies derzeit nur zwischen Absätzen möglich ist. Das bedeutet, dass Sie darauf achten müssen, den Text nicht zu beeinflussen (siehe die Klammern in der zweiten Textzeile):
\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}
Antwort3
Es scheint, dass der picture
Modus beschädigt ist, wenn bidi
er zusammen verwendet wird babel
.
Minimalbeispiel.
\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}
Mögliche Problemumgehung (kann negative Auswirkungen auf den Begrenzungsrahmen haben, wenn Sie verwenden \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}
Grundsätzlich sagen wir, cancel
dass der erweiterte picture
Modus gut ist.
Wenn Sie hingegen verwenden, ist nichts erforderlich bidi=basic-r
, dies könnte jedoch andere Nebenwirkungen haben.
\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}