Das Abbrechen des Pakets funktioniert manchmal nicht auf Hebräisch

Das Abbrechen des Pakets funktioniert manchmal nicht auf Hebräisch

Normalerweise babelschreibe ich Dokumente auf Hebräisch und verwende das cancelPaket, 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 babelEinstellungen ä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 \cancelBefehl 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 luatexsind die Dinge mit einfacher als mit xetex). Aus diesem Grund wird das Makro \babelsublrbereitgestellt, 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 pictureUmgebung mit unterstützt wird pict2e. Leider \cancelverwendet die pictureUmgebung nicht, sondern emuliert stattdessen das ursprüngliche Verhalten, sodass dies pict2ekeine Auswirkungen hat. (In der Datei gibt es sogar einen Hinweis .texzu 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}

Bildbeschreibung hier eingeben

Antwort3

Es scheint, dass der pictureModus beschädigt ist, wenn bidier 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}

Bildbeschreibung hier eingeben

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, canceldass der erweiterte pictureModus gut ist.

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

verwandte Informationen