
Ich möchte das Paket verwenden tabu
, von dem ich gehört habe, dass es das neueste und beste Paket zum Erstellen von Tabellen ist, um eine Tabelle zu generieren, die so aussieht:
-------------------------------------
|A | B | C|
| | | |
| | | |
-------------------------------------
| | | |
|A | B | C|
| | | |
-------------------------------------
| | | |
| | | |
|A | B | C|
-------------------------------------
Es handelt sich um eine einfache Tabelle, aber der Text in jeder Zelle ist anders ausgerichtet. In der Paketdokumentation steht, dass Spalten gleichzeitig sowohl vertikal (mit , , ) als auch horizontal (mit , , , ) X
ausgerichtet werden können, aber ich kann keine Möglichkeit finden, diese Funktion zum Erstellen dieser Tabelle zu verwenden. Ich weiß, dass es immer möglich ist, einige Low-Level-Befehle wie für diesen Zweck zu verwenden, aber ich bin sehr daran interessiert, zu erfahren, ob es eine bessere Möglichkeit gibt, dies zu tun.p
m
b
l
c
r
j
\parbox
Wenn es ein anderes Paket gibt, das eine solche Tabelle erstellen oder bei der Ausrichtung helfen kann, besprechen Sie es bitte hier.
Antwort1
tabu
ist ein gefährliches Paket; es hat viele Fehler und wird nicht gepflegt; außerdem ist die neue Version nicht mit der aktuellen kompatibel. Mein Ratschlag an dieser Stelle ist, es nicht zu verwenden tabu
(siehethis thread
beictt).
Sie können einfach diearray
Paket zum Deklarieren einiger Spaltentypen. Anschließend \multicolumn
kann es hilfreich sein, von einem Typ zu einem anderen zu wechseln:
\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}
Die Syntax für den L
Spaltentyp lautet
L{<width>}{<height>}{<v. position>}{<text justification>}
wobei <width>
und <height>
die Breite und Höhe der Zelle steuern, <v. position>
die vertikale Position des Textes innerhalb der Zelle ist (mögliche Werte: t
oben, c
mittig b
, unten) und <text justification>
die Ausrichtung des Textes innerhalb der Zelle steuert (mögliche Werte: l
unregelmäßig links, c
zentriert, r
unregelmäßig rechts).
Antwort2
Hier ist eine TikZ-basierte Antwort, die ich aus einem Sudoko-generierenden Code von Roberto Bonvallet adaptiert habe (Quelle: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}
Antwort3
Ich würde das Paket vorschlagen cals
. Die Dokumentation "Anwendungsbeispiele" Seite 3 zeigt die gewünschte Tabelle.
\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}