Freie Zellausrichtung in einer Tabelle

Freie Zellausrichtung in einer Tabelle

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 , , , ) Xausgerichtet 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.pmblcrj\parbox

Wenn es ein anderes Paket gibt, das eine solche Tabelle erstellen oder bei der Ausrichtung helfen kann, besprechen Sie es bitte hier.

Antwort1

tabuist 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 threadbeictt).

Sie können einfach diearrayPaket zum Deklarieren einiger Spaltentypen. Anschließend \multicolumnkann 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}

Bildbeschreibung hier eingeben

Die Syntax für den LSpaltentyp 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: toben, cmittig b, unten) und <text justification>die Ausrichtung des Textes innerhalb der Zelle steuert (mögliche Werte: lunregelmäßig links, czentriert, runregelmäß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}

Bildbeschreibung hier eingeben

Antwort3

Ich würde das Paket vorschlagen cals. Die Dokumentation "Anwendungsbeispiele" Seite 3 zeigt die gewünschte Tabelle.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen