
tabu
テーブルを作成するための最新かつ最高のパッケージだと聞いたパッケージを使用して、次のようなテーブルを生成したいと思います。
-------------------------------------
|A | B | C|
| | | |
| | | |
-------------------------------------
| | | |
|A | B | C|
| | | |
-------------------------------------
| | | |
| | | |
|A | B | C|
-------------------------------------
これは単純な表ですが、各セルのテキストの配置が異なります。パッケージのドキュメントには、X
列は垂直方向 ( p
、、、m
を使用b
) と水平方向 ( l
、、、、c
をr
使用j
) の両方に同時に配置できると記載されていますが、この機能を使用してこの表を作成する方法が見つかりません。この目的のために、 などの低レベル コマンドを使用することは常に可能であることはわかっていますが\parbox
、それを行うより良い方法があるかどうかを非常に知りたいです。
このようなテーブルを作成したり、配置を支援できる他のパッケージがある場合は、ここで議論してください。
答え1
tabu
は危険なパッケージです。バグが多く、メンテナンスもされていません。また、新しいバージョンは現在のバージョンと互換性がありません。現時点での私のアドバイスは、使用しないことですtabu
(this thread
でctt)。
単にarray
いくつかの列の型を宣言するパッケージは、\multicolumn
ある型から別の型に切り替えるのに役立ちます。
\documentclass{article}
\usepackage{array}
\newcolumntype{L}[4]{
>{\vspace{0pt}\minipage[c][#2][#3]{3cm}%
\ifx#4r\relax\raggedright
\else
\ifx#4l\relax\raggedleft
\else
\ifx#4c\relax\centering
\fi\fi\fi
}p{#1}
<{\endminipage\vspace{\tabcolsep}}}
\begin{document}
\noindent\begin{tabular}{|L{3cm}{3cm}{t}{r}|L{3cm}{3cm}{t}{c}|L{3cm}{3cm}{t}{l}|}
\hline
A & B & C \tabularnewline
\hline
\multicolumn{1}{|L{3cm}{3cm}{c}{r}|}{A}
& \multicolumn{1}{L{3cm}{3cm}{c}{c}|}{B}
& \multicolumn{1}{L{3cm}{3cm}{c}{l}|}{C}
\tabularnewline
\hline
\multicolumn{1}{|L{3cm}{3cm}{b}{r}|}{A}
& \multicolumn{1}{L{3cm}{3cm}{b}{c}|}{B}
& \multicolumn{1}{L{3cm}{3cm}{b}{l}|}{C}
\tabularnewline
\hline
\end{tabular}
\end{document}
列タイプの構文L
は
L{<width>}{<height>}{<v. position>}{<text justification>}
ここで<width>
、 と は<height>
セルの幅と高さを制御し、<v. position>
はセル内のテキストの垂直位置 (可能な値: t
top、c
center、、b
bottom) を制御し、 はセル内のテキストの位置合わせ (可能な値: raggedleft、centered、 raggedright)<text justification>
を制御します。l
c
r
答え2
これは、Roberto Bonvallet による Sudoko 生成コードから改変した TikZ ベースの回答です (ソース:http://www.texample.net/tikz/examples/sudoku/)。
% Original author: Roberto Bonvallet
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\newcounter{row}
\newcounter{col}
\newcommand\setrow[9]{
\setcounter{col}{1}
\foreach \n in {#1, #2, #3, #4, #5, #6, #7, #8, #9} {
\edef\x{\value{col} - 0.5}
\edef\y{9.5 - \value{row}}
\node[anchor=center] at (\x, \y) {\n};
\stepcounter{col}
}
\stepcounter{row}
}
\begin{document}
\begin{tikzpicture}
\draw[scale=3] (0, 0) grid (3, 3);
\setcounter{row}{1}
\setrow {A}{ }{ } { }{B}{ } { }{ }{C}
\setrow { }{ }{ } { }{ }{ } { }{ }{ }
\setrow { }{ }{ } { }{ }{ } { }{ }{ }
\setrow { }{ }{ } { }{ }{ } { }{ }{ }
\setrow {A}{ }{ } { }{B}{ } { }{ }{C}
\setrow { }{ }{ } { }{ }{ } { }{ }{ }
\setrow { }{ }{ } { }{ }{ } { }{ }{ }
\setrow { }{ }{ } { }{ }{ } { }{ }{ }
\setrow {A}{ }{ } { }{B}{ } { }{ }{C}
\end{tikzpicture}
\end{document}
答え3
パッケージをお勧めしますcals
。ドキュメント"使用例「3ページ目にご希望の表が表示されます。」
\documentclass{article}
\usepackage{xcolor,cals}% http://ctan.org/pkg/{xcolor,cals}
\begin{document}
\makeatletter
\newcommand\bbrow{\brow\setbox\cals@current@row=\hbox{\vbox to 3cm{}}}
\newenvironment{decotable}{\begin{calstable}
\Large\cals@setpadding{Ag}\cals@setcellprevdepth{Al}
\cals@paddingL=0pt \relax
\cals@paddingR=0pt \relax
\def\cals@framecs@width{2pt}
\def\cals@rs@width{8pt}
\def\cals@cs@width{4pt}
}{\end{calstable}}
\begin{decotable}
\colwidths{{3cm}{3cm}{3cm}}
\bbrow
\cell{left,\\top}
\alignC \cell{center,\\top}
\def\cals@borderL{0pt}\def\cals@borderB{0pt}
\alignR \cell{right,\\top} \erow
\let\cals@borderL=\relax \let\cals@borderB=\relax
\bbrow
\alignL \cell{\vfil left,\\middle}
\alignC \cell{\vfil center,\\middle}
\alignR \cell{\vfil right,\\middle} \erow
\bbrow
\def\cals@bgcolor{green}
\alignL \cell{\vfill left,\\bottom}
\def\cals@bgcolor{}
\alignC \cell{\vfill center,\\bottom}
\alignR \cell{\vfill right,\\bottom} \erow
\end{decotable}
\end{document}