
Solía babel
escribir documentos en hebreo y uso el cancel
paquete para dibujar líneas en términos de una ecuación de cancelación. Hasta ahora, esto ha estado funcionando bien. Recientemente, intenté cancelar un término y, en lugar de dibujar una línea sobre el término, dibujó un montón de flechas:
Aquí está el código relevante:
\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}
Lo extraño es que a veces hace eso y otras veces dibuja una línea muy bien, como puedes ver en la imagen. No pude entender el patrón de cuándo funciona y cuándo dibuja esas flechas extrañas. Después de jugar con él, descubrí que el problema probablemente se debe a que el hebreo es el idioma principal. Cuando cambio la babel
configuración para que el inglés sea el idioma principal, el problema desaparece:
Los cambios para inglés:
\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}
¿Alguien puede explicar por qué el \cancel
comando a veces funciona en hebreo y otras no, y cómo puedo solucionar este problema?
Respuesta1
aunque heabrió un problema, soy consciente de que los elementos gráficos y matemáticos, que son intrínsecamente LTR (o más bien no deberían cambiar dependiendo de la dirección), son problemáticos, porque muchos comandos y paquetes deben ser parcheados (afortunadamente con luatex
las cosas es más simple que con xetex
). Por este motivo, \babelsublr
se proporciona la macro, que a menudo, pero no siempre, puede resultar útil. En este caso, el siguiente cambio imprime el resultado esperado:
\[ \babelsublr{ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
} }\]
Editar.Tenga en cuenta que babel
, como se indica en su manual, apoya al picture
medio ambiente con pict2e
. Lamentablemente, \cancel
no utiliza el picture
entorno y, en cambio, emula su comportamiento original, por lo que pict2e
no tiene ningún efecto. (Incluso hay una nota en el .tex
archivo sobre esto último: “En algún momento tal vez encuentre una solución mejor que use todas las pendientes con pict2e”).
Respuesta2
El carácter para el segmento de línea en un cierto ángulo se almacena en la posición de (
. Como bidi refleja el (
y el, )
a veces el carácter se almacena en la )
posición, que es una punta de flecha.
Puede desactivar la duplicación, pero parece que actualmente esto sólo se puede hacer entre párrafos. Eso significa que debes tener cuidado de no afectar el texto (ver los paréntesis en la segunda línea de texto):
\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}
Respuesta3
Parece que el picture
modo se rompe cuando bidi
se usa con babel
.
Ejemplo mínimo.
\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}
Posible solución alternativa (puede tener efectos negativos en el cuadro delimitador, si usa \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}
Básicamente decimos cancel
que el modo extendido picture
es bueno.
Por otro lado, no se necesita nada si usa bidi=basic-r
, pero esto podría tener otros efectos secundarios.
\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}