環境はTeXLive2018+Windows10+lualatex環境(pdflatexでの再現も可能)です
現在下記のような表組み(セル内上揃え、セル内改行時に水平線を入れる場合がある)を作成しようとしています。(このとき、Line2の文字列長さが長い場合は自動的にフォントサイズを下げる機能などをつけようとしています)
Line1
Line2
|
CLine1 CLine2
CLine3
|
RLine1 RLine2 RLine3 RLine4
|
静的な値を代入しての作成は出来たのですが、いざ\setlengthや\settowidth等を利用して計算した値を作成し、セル内で利用した場合に数値が0ptになる現象に遭遇しました。
最小再現コードは以下の通りです。
\documentclass[a4paper,lualatex,ja=standard]{bxjsarticle} \newlength{\len} \newcommand\testlen[1]{ #1\\% #1\\% } \begin{document} \begin{tabular}{|c|} \hline\setlength{\len}{8.21136pt}\testlen{\the\len} \\\hline \end{tabular} \end{document}
想定出力は
です。コンパイルエラー等はなかったため、何が原因で0にセットされているのかが掴めませんでした。(testlen内1行目を#1→0などに置き換えても2行目は0.0pt)
上記値は例えばLine2のフォントサイズを縮小してwidthに収めるために使うために使用(\fontsize{#1}{0pt}……)していて、2行目の値として利用される場合に0ptとして代入されエラーとなってしまいます。
この問題の回避方法についてご教授願います。