
Costumo babel
escrever documentos em hebraico e uso o cancel
pacote para desenhar linhas em termos de uma equação para cancelamento. Até agora, isso tem funcionado bem. Recentemente, tentei cancelar um termo e, em vez de traçar uma linha sobre o termo, desenhei um monte de setas:
Aqui está o 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}
O estranho é que às vezes faz isso e às vezes traça uma linha bem definida, como você pode ver na foto. Não consegui descobrir o padrão de quando funciona e quando desenha aquelas setas estranhas. Depois de brincar com ele, descobri que o problema provavelmente se deve ao fato do hebraico ser o idioma principal. Quando altero as babel
configurações para tornar o inglês o idioma principal, o problema desaparece:
As mudanças para o 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}
Alguém pode explicar por que o \cancel
comando às vezes funciona em hebraico e às vezes não, e como posso corrigir isso?
Responder1
Embora eu tenhaabriu um problema, estou ciente de que elementos gráficos e matemáticos, que são intrinsecamente LTR (ou melhor, não deveriam mudar dependendo da direção), são problemáticos, porque muitos comandos e pacotes devem ser corrigidos (felizmente com luatex
as coisas são mais simples do que com xetex
). Por esse motivo, \babelsublr
é fornecida a macro, que muitas vezes, mas nem sempre, pode ajudar. Nesse caso, a seguinte alteração imprime o resultado esperado:
\[ \babelsublr{ \cancel{
(\nabla{\psi}^{\ast})
\cdot
(\nabla\psi)
} }\]
Editar.Note que babel
, conforme indicado em seu manual, suporta o picture
ambiente com pict2e
. Infelizmente, \cancel
não utiliza o picture
ambiente e, em vez disso, emula seu comportamento original, de modo que pict2e
não tem efeito. (Há até uma nota no .tex
arquivo sobre este último: “Algum dia talvez encontre uma solução melhor que use todas as inclinações com pict2e”).
Responder2
O caractere para o segmento de linha em um determinado ângulo é armazenado na posição do (
. Como bidi espelha o (
e )
às vezes você obtém o caracter armazenado na )
posição, que é uma ponta de seta.
Você pode desabilitar o espelhamento, mas parece que atualmente isso só pode ser feito entre parágrafos. Isso significa que você precisa ter cuidado para não afetar o texto (veja os parênteses na segunda linha do 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}
Responder3
Parece que o picture
modo está quebrado quando bidi
é usado com babel
.
Exemplo 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}
Possível solução alternativa (pode ter efeitos negativos na caixa delimitadora, se você usar \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}
Basicamente, dizemos cancel
que o modo estendido picture
é bom.
Por outro lado, nada é necessário se você usar bidi=basic-r
, mas isso pode ter outros efeitos colaterais.
\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}