tikz와 luatexja 모두에서 "\ifnum ...이 불완전할 때 \end가 발생했습니다."

tikz와 luatexja 모두에서 "\ifnum ...이 불완전할 때 \end가 발생했습니다."

다음 MCE:

\documentclass{article}
\usepackage{tikz}
% \usepackage{luatexja}
\begin{document}
\tikz{\coordinate[yshift=\the\ht\strutbox];}
\end{document}

의심할 여지 없이 컴파일되지만 luatexja패키지가 로드 되면 .log파일에 다음이 포함됩니다(이상하게도 경고나 오류가 아님).

(\end occurred when \ifnum on line 25 was incomplete)
(\end occurred when \if on line 25 was incomplete)

범인은 누구입니까?

  • 패키지 luatexja?
  • 코드 tikz{\coordinate[yshift=\ht\strutbox];}에 의해 그의 잘못된 성격이 드러납니다 luatexja.

편집하다

다음은 실제 사용에 실패한 예(발췌)입니다(실제 문서에는 ProfCollegehanzibox패키지 모두에 대한 리뷰가 포함되어 있습니다).

\documentclass{article}
\usepackage{ProfCollege}
\usepackage{luatexja}
\begin{document}
\Pourcentage[Calculer]{15}{39}

\verb+\hanzibox*[frametype=none]{我}[wo3][moi]\\[1ex]+
\end{document}

답변1

이것은 작동하지만, 얻는 길이는 현재 텍스트 방향에 따라 다르기 때문에 예측할 수 없습니다.

\documentclass{article}
\usepackage{tikz}
\usepackage{luatexja}
\begin{document}

\tikz{\coordinate[yshift=\the\expandafter\ht\expanded{\strutbox}];}

\end{document}

확장할 수 없고 를 반환하기 \strutbox때문에 가 박스 레지스터 이름인 경우에도 작동합니다 .\expanded\strutbox

에서 이 작업을 수행하려면 ProfCollege구성을 사용하는 패키지의 매크로를 패치할 수 있습니다.

\documentclass{article}
\usepackage{ProfCollege}
\usepackage{luatexja}
\usepackage{etoolbox}

% the abstract version of the above
\newcommand{\getstrut}[1]{%
  \the\expandafter#1\expanded{\strutbox}%
}
% the internal commands of ProfCollege to patch
\patchcmd{\TikzPH}{\the\dp\strutbox}{\getstrut\dp}{}{}
\patchcmd{\TikzPHD}{\the\dp\strutbox}{\getstrut\dp}{}{}
\patchcmd{\TikzPHD}{\the\dp\strutbox}{\getstrut\dp}{}{}
\patchcmd{\TikzPB}{\the\ht\strutbox}{\getstrut\ht}{}{}
\patchcmd{\TikzPBD}{\the\ht\strutbox}{\getstrut\ht}{}{}
\patchcmd{\TikzPBD}{\the\ht\strutbox}{\getstrut\ht}{}{}
\patchcmd{\TikzRH}{\the\ht\strutbox}{\getstrut\ht}{}{}
\patchcmd{\TikzRB}{\the\dp\strutbox}{\getstrut\dp}{}{}
% the user level command to patch
\patchcmd{\FlecheLineaireH}{\ht\strutbox}{\getstrut\ht}{}{}

\begin{document}

\Pourcentage[Calculer]{15}{39}

\verb+\hanzibox*[frametype=none]{我}[wo3][moi]\\[1ex]+

\begin{center}
\Propor[
  Stretch=1.25,
  Math,
  GrandeurA=Hauteur $h$ (cm),
  GrandeurB=\begin{tabular}{c}Volume (en cm$^3$) d'un cylindre\\ de rayon \Lg{5} et
            de hauteur $h$\end{tabular},
  Largeur=0.75cm
]{2/$50\pi$,3/$75\pi$,5/}
\end{center}
\FlecheLineaireH{1}{2}{3}{$+$}
\FlecheLineaireB{1}{2}{3}{$+$}

\end{document}

사용하는 유일한 사용자 수준 명령은 \ht\strutbox아주 \FlecheLineaireH이상하게도 이 없지만 \the패키지 문서에서 예제를 복사했는데 작동하는 것 같습니다.

이전경고여전히 적용됩니다. 에서 허용하는 대로 다른 텍스트 방향을 사용하면 luatexja문제가 발생할 수 있습니다.

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

관련 정보