Was soll in die Schnittmenge der Zeilen-/Spaltenbeschriftungen einer Tabelle eingefügt werden?

Was soll in die Schnittmenge der Zeilen-/Spaltenbeschriftungen einer Tabelle eingefügt werden?

Ich habe ein Raster/eine Tabelle/eine Matrix mit separatenEtikettenfür die Zeilen und Spalten. Ich möchte diese Beschriftungen jedoch auch selbst beschriften (indem ich den „Typ“ der Beschriftungen angebe, z. B. SI-Einheiten usw.).

Hier ist ein MWE mit drei Varianten (sehen Sie sich den Eintrag abc/defoben links an, der die Zeilenbeschriftungen abcund Spaltenbeschriftungen beschreibt def):

\documentclass{article}
\begin{document}
\begin{table}
\caption{Forward slash.}
\[\begin{array}{c|ccccc}
abc/def & 1 & 2 & 3 & 4 & 5\\
\hline
1 & a & b & c & d & e\\
2 & f & g & h & i & j\\
3 & k & l & m & n & o\\
\end{array}\]
\end{table}

\begin{table}
\caption{Vertical bar.}
\[\begin{array}{c|ccccc}
abc|def & 1 & 2 & 3 & 4 & 5\\
\hline
1 & a & b & c & d & e\\
2 & f & g & h & i & j\\
3 & k & l & m & n & o\\
\end{array}\]
\end{table}

\begin{table}
\caption{Backslash.}
\[\begin{array}{c|ccccc}
abc\backslash def & 1 & 2 & 3 & 4 & 5\\
\hline
1 & a & b & c & d & e\\
2 & f & g & h & i & j\\
3 & k & l & m & n & o\\
\end{array}\]
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Dieses MWE weist jedoch (mindestens) die folgenden zwei Probleme auf: Die erste Spalte (Beschriftung der Zeilen) ist zu breit und die zentrierten Beschriftungen sind weit vom Kern des Arrays selbst entfernt (rechtsbündige Ausrichtung könnte helfen, aber ... das führt zu anderen Problemen). Zweitens sieht der Abstand um abc/def falsch aus.

Die Frage ist im Grunde, wie ich dieses Array schön setzen soll. Was soll ich in die obere linke Position anstelle von setzen abc/def? Ich möchte abcund nicht defin zwei unterschiedliche (Mehrfach-)Spalten setzen. Vielleicht ist das Stapeln abcdarüber (oder darunter?) defein Anfang, aber dann bräuchte ich noch eine Art visuellen Trenner (der die Rolle der \|/Symbole übernimmt) innerhalb dieser Zelle. Ich sollte wahrscheinlich auch klarstellen, dass sowohl Beschriftungen abcals auch defin der Praxissehr kurzex/y, normalerweise würde ich oder n/moder schreiben n/k, also einstellige mathematische Variablen und keine langen Texte.


Verwandt:So erstellen Sie eine Tabelle mit Beschriftungen (erste Zeile und erste Spalte)

Antwort1

Ich schlage „keine der drei Möglichkeiten“ vor. Erwägen Sie stattdessen die Verwendung eines klassischen „Tableau“-Aufbaus mit einer klaren hierarchischen Struktur in der Kopfzeile. Ein solcher Aufbau hilft, den „beengten“ Eindruck zu vermeiden, der bei jeder der drei von Ihnen vorgeschlagenen Möglichkeiten fast unvermeidlich ist.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{booktabs}% for \toprule, \midrule, \bottomrule, and \cmidrule macros
\usepackage{amsmath} % for \text macro
\begin{document}
\begin{table}
\caption{Still another approach}
\[
\begin{array}{@{}l*{5}{c}@{}}
\toprule
\text{abc} & \multicolumn{5}{c@{}}{\text{def}}\\
    \cmidrule(l){2-6}
    & 1 & 2 & 3 & 4 & 5\\
\midrule
1 & a & b & c & d & e\\
2 & f & g & h & i & j\\
3 & k & l & m & n & o\\
\bottomrule
\end{array}
\]
\end{table}
\end{document}

Antwort2

Es ist auch möglich, Ti zu verwendenkZ direkt in der Tabelle, es wird überhaupt keine Savebox benötigt, um die Längen zu erhalten:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{table}
\caption{Diagonal Split}
\[\begin{array}{c|ccccc}
\tikz{\node[below left, inner sep=1pt] (def) {def};%
      \node[above right,inner sep=1pt] (abc) {abc};%
      \draw (def.north west|-abc.north west) -- (def.south east-|abc.south east);}
 & 1 & 2 & 3 & 4 & 5\\
\hline
1 & a & b & c & d & e\\
2 & f & g & h & i & j\\
3 & k & l & m & n & o\\
\end{array}\]
\end{table}
\end{document}

Bildbeschreibung hier eingeben

Dann \tikzhaben Sie innerhalb des Befehls das TikZ-Power, um alles zu tun ... Hier ist eine Version mit neu positionierten Knoten, einer very thin shortened-Trennlinie und Schriftarten in \footnotesize.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{table}
\caption{Diagonal Split}
\[\begin{array}{c|ccccc}
\tikz[diag text/.style={inner sep=0pt, font=\footnotesize},
      shorten/.style={shorten <=#1,shorten >=#1}]{%
        \node[below left, diag text] (def) {def};
        \node[above right=2pt and -2pt, diag text] (abc) {abc};
        \draw[shorten=4pt, very thin] (def.north west|-abc.north west) -- (def.south east-|abc.south east);}
 & 1 & 2 & 3 & 4 & 5\\
\hline
1 & a & b & c & d & e\\
2 & f & g & h & i & j\\
3 & k & l & m & n & o\\
\end{array}\]
\end{table}
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Hier sind zwei Möglichkeiten:

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{mathtools,eqparbox}

\newcommand{\indices}[2]{{% \indices{<rows>}{<columns>}
  \begin{array}{@{}r@{}}
    \scriptstyle #2~\smash{\eqmakebox[ind]{$\scriptstyle\rightarrow$}} \\[-\jot]  
    \scriptstyle #1~\smash{\eqmakebox[ind]{$\scriptstyle\downarrow$}}
  \end{array}}}

\begin{document}

\[
  \begin{array}{c|ccccc}
    \indices{\text{abc}}{\text{def}}
    & 1 & 2 & 3 & 4 & 5 \\
    \hline
    1 & a & b & c & d & e \\
    2 & f & g & h & i & j \\
    3 & k & l & m & n & o
  \end{array}
\]

\[
  \begin{array}{cc|ccccc}
    &\multicolumn{1}{c}{} & \multicolumn{5}{c}{\text{def}} \\
    && 1 & 2 & 3 & 4 & 5 \\
    \cline{2-7}
    & 1 & a & b & c & d & e \\
    \smash{\rotatebox[origin=c]{90}{\text{abc}}} & 2 & f & g & h & i & j \\
    & 3 & k & l & m & n & o
  \end{array}
\]

\end{document}

Wenn Sie an einem matrixähnlichen Befehl interessiert sind, finden Sie einige Beispiele unterWo ist der \matrixBefehl?Dazu gehört die Verwendung von \bordermatrix,kbordermatrixUndblkarray, bei denen Sie Indizes zur Identifizierung der Zeilen/Spalten platzieren können.

Antwort4

Manchmal verwende ich diagonale Linien oder schwarze Kästen:

\documentclass{article}
\usepackage{fp}
\usepackage{graphicx}

\newbox\MytempboxA
\newbox\MytempboxB
\newcommand\myTempA{}
\newcommand\myTempB{}
\newcommand\myTempC{}
\newcommand\myTempD{}

\begin{document}

\begin{table}%
\caption{Diagonal line approach}%
\[%
\setbox\MytempboxA\hbox{\mbox{abc}}%
\setbox\MytempboxB\hbox{\mbox{def}}%
\begin{array}{@{}|r|*{5}{c}|}
\hline
\multicolumn{1}{|l}{%
  \edef\myTempA{%
    \number\numexpr\dimexpr\wd\MytempboxA+2\arraycolsep\relax\relax
  }%
  \edef\myTempB{%
    \number
    \numexpr
      \dimexpr\dp\csname @arstrutbox\endcsname+%
              \ht\csname @arstrutbox\endcsname+%
              \arrayrulewidth
      \relax
    \relax
  }%
  \FPpow\myTempC\myTempA{2}%
  \FPpow\myTempD\myTempB{2}%
  \FPadd\myTempC\myTempC\myTempD
  \FProot\myTempC\myTempC{2}% length of diagonal line in sp
  \FPdiv\myTempD\myTempB\myTempA
  \FParctan\myTempD\myTempD% angle of diagonal line in rad
  \smash{%
    \kern-\arraycolsep
    \rlap{%
      \lower
        \dimexpr
          \dp\csname @arstrutbox\endcsname+\arrayrulewidth
        \relax
        \hbox{%
          \rotatebox[units=-6.283185,origin=br]{\myTempD}{%
            \rule{\myTempC sp}{\arrayrulewidth}%
          }%
        }%
    }%
  }%
}&\multicolumn{5}{c|}{\copy\MytempboxB}\\%
\cline{2-6}%
\copy\MytempboxA& 1 & 2 & 3 & 4 & 5\\%
\hline
1 & a & b & c & d & e\\%
2 & f & g & h & i & j\\%
3 & k & l & m & n & o\\%
\hline
\end{array}%
\]%
\end{table}

\begin{table}
\caption{Black box approach}%
\setbox\MytempboxA\hbox{\mbox{abc}}%
\setbox\MytempboxB\hbox{\mbox{def}}%
\[%
\begin{array}{@{}|r|*{5}{c}|}%
\hline
\multicolumn{1}{|l|}{%
  \smash{%
    \kern-\arraycolsep
    \rlap{%
      \rule[{-\dp\csname @arstrutbox\endcsname}]%
           {\dimexpr\wd\MytempboxA+2\arraycolsep\relax}%
           {%
             \dimexpr
               \dp\csname @arstrutbox\endcsname+%
               \ht\csname @arstrutbox\endcsname
             \relax
           }%
    }%
  }%
}&\multicolumn{5}{c|}{\copy\MytempboxB}\\
\hline
\copy\MytempboxA& 1 & 2 & 3 & 4 & 5\\%
\hline
1 & a & b & c & d & e\\%
2 & f & g & h & i & j\\%
3 & k & l & m & n & o\\%
\hline
\end{array}%
\]%
\end{table}


\begin{table}%
\caption{Tangram puzzle approach}%
\[%
\setbox\MytempboxA\hbox{\mbox{abc}}%
\setbox\MytempboxB\hbox{\mbox{def}}%
\begin{array}{@{}|r|*{5}{c}|}
\hline
\multicolumn{1}{|l}{%
  \edef\myTempA{%
    \number\numexpr\dimexpr\wd\MytempboxA+2\arraycolsep\relax\relax
  }%
  \edef\myTempB{%
    \number
    \numexpr
      \dimexpr\dp\csname @arstrutbox\endcsname+%
              \ht\csname @arstrutbox\endcsname+%
              \arrayrulewidth
      \relax
    \relax
  }%
  \FPpow\myTempC\myTempA{2}%
  \FPpow\myTempD\myTempB{2}%
  \FPadd\myTempC\myTempC\myTempD
  \FProot\myTempC\myTempC{2}% length of diagonal line in sp
  \FPdiv\myTempD\myTempB\myTempA
  \FParctan\myTempD\myTempD% angle of diagonal line in rad
  \smash{%
    \kern-\arraycolsep
    \rlap{%
      \lower
        \dimexpr
          \dp\csname @arstrutbox\endcsname+\arrayrulewidth
        \relax
        \hbox{%
          \rotatebox[units=-6.283185,origin=br]{\myTempD}{%
            \rule{\myTempC sp}{\arrayrulewidth}%
          }%
        }%
    }%
  }%
}&\multicolumn{5}{c|}{\copy\MytempboxB}\\%
\copy\MytempboxA& 1 & 2 & 3 & 4 & 5\\%
\cline{2-6}%
1 & a & b & c & d & e\\%
2 & f & g & h & i & j\\%
3 & k & l & m & n & o\\%
\hline
\end{array}%
\]%
\end{table}

\begin{table}
\caption{squares approach}%
\setbox\MytempboxA\hbox{\mbox{abc}}%
\setbox\MytempboxB\hbox{\mbox{def}}%
\[%
\begin{array}{@{}|r|*{5}{c}|}%
\hline
\multicolumn{1}{|l|}{}&\multicolumn{5}{c|}{\copy\MytempboxB}\\
\copy\MytempboxA& 1 & 2 & 3 & 4 & 5\\%
\cline{2-6}%
1 & a & b & c & d & e\\%
2 & f & g & h & i & j\\%
3 & k & l & m & n & o\\%
\hline
\end{array}%
\]%
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Und manchmal verwende ich so etwas wie Winkelpfeile:

\documentclass{article}

\usepackage{tikz}

\newbox\MytempboxA
\newbox\MytempboxB
\newbox\MytempboxC
\newcommand\Upbox[1]{%
  \lower\dimexpr-\ht\MytempboxA+\ht\MytempboxB\relax\hbox{#1}%
  %#1%
}%
\newcommand\leftbox[1]{%
  \hbox to\wd\MytempboxC{\hss#1\hss}\hbox to\wd\MytempboxB{\hfill}%
}%
\begin{document}

\begin{table}%
\caption{Angle arrow.}%
\setbox\MytempboxB=\hbox{\mbox{def}}%
\setbox\MytempboxC=\hbox{\mbox{abc}}%
\setbox\MytempboxA=\hbox{\lower\dp\MytempboxC\vbox{%
  \hbox{%
    \begin{tikzpicture}[x=.25cm, y=.25cm, inner sep=0pt]
    \draw[->,thin] (0,0) -- (1,0) node[right]{\copy\MytempboxB};
    \draw[->,thin] (0,0) -- (0,-1) node[below]{\copy\MytempboxC};
    \end{tikzpicture}%
  }%
}}%
\[%
  \begin{array}{c|ccccc}%
  \copy\MytempboxA&\Upbox{1}&\Upbox{2}&\Upbox{3}&\Upbox{4}&\Upbox{5}\\%
  \hline
  \leftbox{1}& a & b & c & d & e\\%
  \leftbox{2} & f & g & h & i & j\\%
  \leftbox{3} & k & l & m & n & o\\%
  \end{array}%
\]
\end{table}


\begin{table}
\caption{Another angle arrow.}%
\setbox\MytempboxB=\hbox{\mbox{def}}%
\setbox\MytempboxC=\hbox{\mbox{abc}}%
\[%
  \begin{array}{c@{}c|ccccc}%
  \smash{%
    \hbox{%
      \kern.5\wd\MytempboxC
      \lower.75\ht\MytempboxB
      \hbox{%
        \begin{tikzpicture}[x=.25cm, y=.25cm, inner sep=0pt]
        \draw[->,thin] (0,0) -- (1,0) node[right]{};
        \draw[->,thin] (0,0) -- (0,-1) node[below]{};
        \end{tikzpicture}%
      }%
    }%
  }&\copy\MytempboxB&1&2&3&4&5\\%
  \copy\MytempboxC&&\\%
  \hline
  1&& a & b & c & d & e\\%
  2&& f & g & h & i & j\\%
  3&& k & l & m & n & o\\%
  \end{array}%
\]%
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Sie können das Erscheinungsbild von Koordinatensystemachsen auch mit horizontalen und vertikalen Linien eines Arrays erstellen:

\documentclass{article}

\usepackage{tikz}

\newbox\MytempboxA
\newbox\MytempboxB
\newbox\MytempboxC

\begin{document}

\begin{table}%
\caption{Coordinate axes approach.}%
\setbox\MytempboxC=\hbox{\mbox{abc}}%
\setbox\MytempboxB=\hbox{\mbox{def}}%
\setbox\MytempboxA\hbox{%
  \lower\arrayrulewidth\hbox{%
  \begin{tikzpicture}[x=.25cm, y=.05cm, inner sep=0pt]%
  \draw[->,line width=\arrayrulewidth] (0,1) -- (1,1) node[right]{};
  \end{tikzpicture}%
  }%
}%
\[%
  \begin{array}{c|cccccl}%
  &1&2&3&4&5&\\%
  \cline{1-6}%
  1& a & b & c & d & e&%
  \kern\dimexpr-\arraycolsep-.5\arrayrulewidth\relax\null
  \smash{%
      \lower\dimexpr-\ht\csname @arstrutbox\endcsname+.75\arrayrulewidth+0pt\relax\copy\MytempboxA
      \lower\dimexpr-\ht\csname @arstrutbox\endcsname+0.5ex+.75\arrayrulewidth\relax\copy\MytempboxB
  }%
  \\%
  2 & f & g & h & i & j&\\%
  3 & k & l & m & n & o&\\%
  \multicolumn{1}{r}{}&%
  \multicolumn{6}{l}{%
    \kern\dimexpr-.5\wd\MytempboxC-\arraycolsep\relax\null
    \vbox{%
      \kern\dimexpr-.5\arrayrulewidth\relax\hbox{%
        \begin{tikzpicture}[x=.25cm, y=.075cm, inner sep=0pt]%
        \draw[->,line width=\arrayrulewidth] (0,1) -- (0,-1) node[below]{\copy\MytempboxC};
        \end{tikzpicture}%
      }%
    }%
  }%
  \\%
  \end{array}%
\]
\end{table}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen