취소 패키지가 히브리어로 작동하지 않는 경우가 있습니다.

취소 패키지가 히브리어로 작동하지 않는 경우가 있습니다.

저는 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)
} }\]

편집하다.Note 는 babel설명서에 명시된 대로 를 사용하여 picture환경을 지원합니다 pict2e. 안타깝게도 환경 \cancel을 사용하지 않고 picture대신 원래 동작을 에뮬레이션하므로 pict2e아무런 효과가 없습니다. ( .tex파일에는 후자에 대한 메모도 있습니다 . "언젠가는 pict2e와 함께 모든 경사면을 사용하는 더 나은 솔루션을 찾을 수 있을 것입니다.")

답변2

특정 각도의 선분에 대한 문자는 (. bidi가 을 미러링하므로 (때로는 화살촉 위치 )에 문자가 저장됩니다 .)

미러링을 비활성화할 수 있지만 현재는 단락 사이에서만 수행할 수 있는 것처럼 보입니다. 즉, 텍스트에 영향을 주지 않도록 주의해야 합니다(두 번째 텍스트 줄의 괄호 참조).

\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하면 모드가 중단되는 것 같습니다 .bidibabel

최소한의 예.

\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}

여기에 이미지 설명을 입력하세요

관련 정보