tabularrayについて

tabularrayについて

- nori mori の投稿
返信数: 6
よろしくお願い致します。

昨日、Texlive2021をインストールしました。今まではTexlive2020を使って
いましたが、これを機会に初めてtabularrayを使ってみました。
下記のように簡単なマクロを使って行番号をふろうとしたのですが、
tabularrayを使うとカウンタが「ずれる?」ようです。ちなみに、私は、
普段はLualatexを使っていましたが、platexでも同じです。

現象1:カウンタがずれる
現象2:センター「c」なのに、少し右にずれて表示される。
(テスト2の最初のカラム)

☆ texファイルの内容
% \documentclass[paper=a4,fontsize=12.0pt,
% jafontscale=0.925,head_space=1.8cm,foot_space=2.0cm,
% gutter= 4zw,line_length=45zw]{jlreq}
\documentclass{jsarticle}
\usepackage{tabularx}
%%% 新しい表作成
\usepackage{tabularray}
% \begin{tblr} ~ \end{tblr}
\newcounter{kkk}
\newcommand{\ka}{\the\value{kkk}\stepcounter{kkk}}
\newcommand{\kd}{\the\value{kkk}}

\begin{document}

\setcounter{kkk}{1}

テスト1 tabular

\begin{tabular}{|c|c|l|c|r|}

\hline

\ka & \kd & \kd 犬 & \kd 猫 & \kd 怪獣 \\ \hline

\ka & \kd & \kd ワン & \kd ニャオ & \kd ギャオ \\ \hline

\ka & \kd & \kd 柴犬 & \kd シャム & \kd バルタン星人 \\ \hline

\end{tabular}

\setcounter{kkk}{1}

テスト2 tabularray

\begin{tblr}{|c|c|l|c|r|}

\hline

\ka & \kd & \kd 犬 & \kd 猫 & \kd 怪獣 \\ \hline

\ka & \kd & \kd ワン & \kd ニャオ & \kd ギャオ \\ \hline

\ka & \kd & \kd 柴犬 & \kd シャム & \kd バルタン星人 \\ \hline

\end{tblr}

\end{document}

☆ PrintScreen




添付 tex-tabu.jpg
nori mori への返信

Re: tabularrayについて

- nori mori の投稿
すみません。自己レスです。

下記のようなエラーが出ていました。

-----
(c:/texlive/2021/texmf-dist/tex/latex/l3packages/xparse/xparse.sty))
No file tblr-test-a.aux.

Overfull \hbox (5.00002pt too wide) detected at line 45
[]

Overfull \hbox (5.00002pt too wide) detected at line 45
[]

Overfull \hbox (5.00002pt too wide) detected at line 45
[]
[1] (./tblr-test-a.aux) )
(see the transcript file for additional information)
-----
自分で調べてみます。

「あー、アレだよ」と教えてくださるとありがたいのですが。
nori mori への返信

Re: tabularrayについて

- 和田 勇 の投稿

tabularray の動きを追いかけただけで、解決には至っていませんが 。。。

texdoc tabularray で示される p26 「3.6 Counters and Lengths」を参考に 各セルに以下のデバッグコードを組み込み動きを追ってみました。

     \message{Cell[\arabic{rownum}][\arabic{colnum}]=(\the\value{kkk})}

動きとしては、表全体を2回スキャンし各回毎一つのセルを3回評価しているようです。

提示されたデータですと1回目の表全体プリスキャンで \ka は 3 行で各行 3回評価されるので 、初期値 1 に 3x3=9 カウントアップされ 10 になっています。

実際の表示のためにもう一度スキャンが行われるのですが、各セル毎3回目評価されますが、 そのうち2回目のものをレンダリングに使われるようで最初のセルには 11 が表示されるようです。 この時 kkk は 13 になってしまっています。

1回目のプリスキャンは恐らく列幅などを自動計算するためのものだと思います。 「Overfull \hbox...」の警告は、プリスキャンで決定した幅が、実際表示するときに 数値桁数が変わってしまったためと思われます。

PS 「3.6 Counters and Lengths」のrownum やcolnum変数で解決できると良いのですが。

和田 勇 への返信

Re: tabularrayについて

- はやて (h20y6m) の投稿

tabularrayのドキュメントの「5.3 Library counter」に以下のような記述がありますね。

You need to load counter library with \UseTblrLibrary{counter}, if you want to modify some LaTeX counters inside tabularray tables.

tabularray テーブル内でLaTeXカウンターを変更したい場合は、 \UseTblrLibrary{counter} を使用して counter ライブラリをロードする必要があります。

はやて (h20y6m) への返信

Re: tabularrayについて

- nori mori の投稿
和田様、はやて様、ご返事ありがとうございました。

はやて様ご指摘の「\UseTblrLibrary{counter}」を入れることでOKになりました。

\documentclass{jlreq}
%%% 新しい表作成
\usepackage{tabularray}
\UseTblrLibrary{counter} %% <==== これを入れる
\newcounter{kkk}
\newcommand{\ka}{\the\value{kkk}\stepcounter{kkk}}
\newcommand{\kaa}{\the\value{kkk}\addtocounter{kkk}{10}} %% テストのため
\newcommand{\kd}{\the\value{kkk}}

nori mori への返信

Re: tabularrayについて

- 和田 勇 の投稿

解決して何よりです。

もう少し先の Chapter 5 Use Some Libraries まで調べればよかったと反省。

改めて texdoc tabularray で表示される pdf の原稿 TEXMFDIST/doc/latex/tabularray/tabularray.tex を見ると

    \UseTblrLibrary{amsmath,booktabs,counter,diagbox,siunitx,varwidth}

と書いてありますね。用途にもよりますが、tabularray を使う場合このように全部利用した方がよさそうですね。

Chapter 5 Use Some Libraries を読むと、今まで苦労して表を書いてきたのが嘘のように見やすくかけますね。 例えば \hline を各行に書かなくても横罫線を引くとか、太い罫線、斜め線、小数点合わせ?とかとか。

また、tabularray.sty や tabularray.pdf を「NewTableCommand」で検索すると細かな設定ができそうで、今後の「表」はこれに移行しようかと思案し始めています。

和田 勇 への返信

Re: tabularrayについて

- nori mori の投稿
和田様、おはようございます。

>> 今後の「表」はこれに移行しようかと思案し始めています。

はい、私もTexlive2021にした機会に、以前より使ってみたいと思って
いましたので、試したところ、初っ端からつまずいてしまいましたが、
ぜひ、使いこなしたいと考えています。

皆様、ありがとうございました。