tabularrayについて(さらに)

tabularrayについて(さらに)

- nori mori の投稿
返信数: 2
よろしくお願い致します。
先日、tabularrayについて質問した者です。
その時の現象2が解決されていないことに気づきました。
対処1:下記テスト3は、あらかじめ予想される文字数を「透明(白)」で
挿入しているという苦肉の策。
対処2:下記テスト4は、tabularrayマニュアルから、あらかじめ予想される
文字数の長さを指定する方法。

もう少し、スマートな解決方法はないものでしょうか。
----
\documentclass{jlreq}
%%% 新しい表作成
\usepackage{tabularray}
\UseTblrLibrary{amsmath,booktabs,counter,diagbox,siunitx,varwidth}
\newcounter{kc}
\newcounter{kl}
\newcounter{kr}
\newcommand{\kac}{\the\value{kc}\stepcounter{kc}}
\newcommand{\kal}{\the\value{kl}\stepcounter{kl}}
\newcommand{\kar}{\the\value{kr}\stepcounter{kr}}
\newcommand{\kaci}{\the\value{kc}\addtocounter{kc}{100}}
\newcommand{\kalii}{\the\value{kl}\addtocounter{kl}{1000}}
\newcommand{\kariii}{\the\value{kr}\addtocounter{kr}{10000}}
\newcommand{\ksetcounter}{\setcounter{kc}{1}\setcounter{kl}{1}\setcounter{kr}{1}}

\begin{document}

\ksetcounter

テスト1 tabular

\begin{tabular}{|c|l|r|}
\hline
\kac & \kal & \kar \\ \hline
\kaci & \kal & \kar \\ \hline
\kac & \kalii & \kar \\ \hline
\kac & \kal & \kariii \\ \hline
\kaci & \kal & \kar \\ \hline
\end{tabular}

\ksetcounter

テスト2 tabularray

\begin{tblr}{|c|l|r|}
\hline
\kac & \kal & \kar \\ \hline
\kaci & \kal & \kar \\ \hline
\kac & \kalii & \kar \\ \hline
\kac & \kal & \kariii \\ \hline
\kaci & \kal & \kar \\ \hline
\end{tblr}

\ksetcounter

テスト3 tabularray 苦肉の策

\newcommand{\kaclong}{{\color{white}{0}}\kac{\color{white}0}}
\newcommand{\kallong}{{\kal{\color{white}000}}}
\newcommand{\karlong}{{\color{white}0000}\kar}
\begin{tblr}{|c|l|r|}
\hline
\kaclong & \kallong & \karlong \\ \hline
\kaci & \kal & \kar \\ \hline
\kac & \kalii & \kar \\ \hline
\kac & \kal & \kariii \\ \hline
\kaci & \kal & \kar \\ \hline
\end{tblr}

\ksetcounter

テスト4 tabularray

\newlength{\kleni}
\newlength{\klenii}
\settowidth{\kleni}{000}
\settowidth{\klenii}{0000}

\begin{tblr}{colspec={|Q[c,wd=\kleni]|Q[l,wd=\klenii]|Q[r,wd=15mm]|}}
\hline
\kac & \kal & \kar \\ \hline
\kaci & \kal & \kar \\ \hline
\kac & \kalii & \kar \\ \hline
\kac & \kal & \kariii \\ \hline
\kaci & \kal & \kar \\ \hline
\end{tblr}

\end{document}


添付 texsitumon.jpg
nori mori への返信

Re: tabularrayについて(さらに)

- 和田 勇 の投稿
  • > その時の現象2が解決されていないことに気づきました

    過去記事を探すと、「現象2」とは以下のことでしょうか?

    現象2:センター「c」なのに、少し右にずれて表示される。
    

    その時のデータを元に、\UseTblrLibrary{counter}の処置だけて処理してみましたが、ずれている感じは私はわかりませんでした。

    もし微妙にだとするとセルの両側にあるデフォルトの空き具合かな?左右とも同じになってると思うのですが、調整する場合が @{...} を挿入するのかな?

  • 「対処1」vs 「対処2」

    対処1の方は、先頭行に桁数の大きいものがきてしまう場合には、横幅をとり過ぎてしまいますので、「対処2」の方が良いですね。

    詳しいことは分かりませんが、 S[format-width=4] のような記述ができると良いのですが、\stepcounter があるためそこでエラーになってしまうので、「対処2」の方法で良いと思います。

    敢えてですが、\NewColumnType を使った方法をアップしておきます。 \cline や点線の罫線などが必要な場合にはもう少し工夫が必要だと思います。

       \newlength{\wdLetterZero}
       \settowidth{\wdLetterZero}{0}
       \NewColumnType{C}[1]{Q[c,wd=#1]}
       \NewColumnType{R}[1]{Q[r,wd=#1]}
       \NewColumnType{L}[1]{Q[l,wd=#1]}
       \begin{tblr}{
           hlines, vlines,
           colspec={
             C{3\wdLetterZero}
             L{4\wdLetterZero}
             R{5\wdLetterZero}%15mm}
           }
         }
         \kac     & \kal     & \kar     \\
         \kaci    & \kal     & \kar     \\
         \kac     & \kalii   & \kar     \\
         \kac     & \kal     & \kariii  \\
         \kaci    & \kal     & \kar     \\
       \end{tblr}
和田 勇 への返信

Re: tabularrayについて(さらに)

- nori mori の投稿
和田様、重ねて、ご返事ありがとうございました。
また、解決方法までご考案くださり感謝致します。使わせていただきます。

>過去記事を探すと、「現象2」とは以下のことでしょうか?
>現象2:センター「c」なのに、少し右にずれて表示される。

はい、はっきりと過去記事の内容を記述すれば良かったと思います。失礼致しました。


現象1:カウンタがずれる:<== \UseTblrLibrary{counter}で解決
現象2:センター「c」なのに、少し右にずれて表示される。 
(テスト2の最初のカラム)
現象2の本質は、c,l,rに関わらず、カウンタが使われている列幅が一番最初の行の
列幅のままであることのようです。つまり、最初が1桁の場合に、数字が増えて2桁に
なっても、そのままの列幅が維持されているので「c」の場合はずれて見える。さらに
桁数が増えると隣のカラムまではみ出してしまう。回避策としては、「その列で予想さ
れる一番大きな文字列の幅を最初に指定する」ことのようです。
tabularrayには、便利機能がかなりありますので、なんとか使いこなしたいと思います。
ありがとうございました。