
El siguiente MCE:
\documentclass{article}
\usepackage{tikz}
% \usepackage{luatexja}
\begin{document}
\tikz{\coordinate[yshift=\the\ht\strutbox];}
\end{document}
se compila sin nada sospechoso pero, si el luatexja
paquete está cargado, el .log
archivo contiene (curiosamente no es ni una advertencia ni un error):
(\end occurred when \ifnum on line 25 was incomplete)
(\end occurred when \if on line 25 was incomplete)
¿Quién es el culpable?
- el
luatexja
paquete ? - el código
tikz{\coordinate[yshift=\ht\strutbox];}
, cuya naturaleza errónea se revela porluatexja
?
Editar
Aquí hay un (extracto de un) ejemplo de uso fallido en el mundo real (el documento real contiene revisiones de ambos ProfCollege
paquetes hanzibox
):
\documentclass{article}
\usepackage{ProfCollege}
\usepackage{luatexja}
\begin{document}
\Pourcentage[Calculer]{15}{39}
\verb+\hanzibox*[frametype=none]{我}[wo3][moi]\\[1ex]+
\end{document}
Respuesta1
Esto funciona, pero la longitud que obtienes es bastante impredecible, porque depende de la dirección actual del texto.
\documentclass{article}
\usepackage{tikz}
\usepackage{luatexja}
\begin{document}
\tikz{\coordinate[yshift=\the\expandafter\ht\expanded{\strutbox}];}
\end{document}
También funciona cuando \strutbox
es solo el nombre de un registro de cuadro, porque no se puede expandir y, por lo tanto, \expanded
devuelve \strutbox
.
Para que esto funcione ProfCollege
, puede parchear las macros en el paquete que utilizan la construcción
\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}
El único comando de nivel de usuario que utiliza \ht\strutbox
es \FlecheLineaireH
, bastante extraño, sin \the
, pero copié el ejemplo de la documentación del paquete y parece funcionar.
El anterioradvertenciatodavía se aplica: si usa diferentes direcciones de texto según lo permitido por luatexja
, tendrá problemas.