Rechteckiger Tisch mit diagonalen Pfeilen
Sep 12 2020
Ich versuche, eine Art Matrix mit Text in den Zellen und Pfeilen in der Diagonale zu erstellen. Wie kann ich in LaTeX eine rechteckige Tabelle wie diese erstellen?
Ich habe das bisher gemacht:
\documentclass{standalone}
\usepackage{multirow}
\usepackage{graphicx}
\begin{document}
\begin{table}[]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{llcc}
& & \multicolumn{2}{c}{\textbf{Job Demands}} \\
& & \multicolumn{1}{l}{Low} & \multicolumn{1}{l}{High} \\ \cline{3-4}
\multirow{2}{*}{\textbf{Job Decision Latitude}} &
\multicolumn{1}{l|}{Low} &
\multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}Passive \\ Job\end{tabular}} &
\multicolumn{1}{c|}{High Strain Job} \\ \cline{3-4}
&
\multicolumn{1}{l|}{High} &
\multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}Low Strain \\ Job\end{tabular}} &
\multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}Active \\ Job\end{tabular}} \\ \cline{3-4}
\end{tabular}%
}
\end{table}
\end{document}
Aber ich weiß nicht, wie ich die diagonalen Pfeile machen soll
Antworten
AlanXiang Sep 11 2020 at 23:50
Erwägen Sie die Verwendung tikz
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\tikzset{
plainnode/.style={
outer sep=0pt,
inner sep=0pt
},
fwtextnode/.style={
fill=white,
minimum width=2.5cm,
text width=2.5cm,
execute at begin node={\scriptsize\centering},
execute at end node={\par}
},
textnode/.style={
execute at begin node={\scriptsize}
}
}
\newcommand*{\textloc}{0.4}
% node a
% node b
% coef
% text
% option
\newcommand{\interpnode}[5]{
\node[textnode,#5] at ($(#1)+#3*(#2)-#3*(#1)$) {#4};
}
\begin{tikzpicture}
\coordinate (a) at (-4, 2);
\coordinate (b) at (4, 2);
\coordinate (c) at (4, -2);
\coordinate (d) at (-4, -2);
\coordinate (e) at (0, 0);
\coordinate (b1) at (5, 2.5);
\coordinate (c1) at (5, -2.5);
\coordinate (f) at ($0.5*(a)+0.5*(b)+(0cm,1cm)$);
\draw[thick] (a)--(b)--(c)--(d)--(a);
\draw[thick] ($0.5*(a)+0.5*(d)$)--($0.5*(b)+0.5*(c)$);
\draw[thick] ($0.5*(a)+0.5*(b)$)--($0.5*(d)+0.5*(c)$);
\draw[thick] (a)--(e);
\draw[thick] (b)--(e);
\draw[thick] (c)--(e);
\draw[thick] (d)--(e);
\draw[thick,-latex] (b)--(b1);
\draw[thick,-latex] (c)--(c1);
\node at (f) {\textbf{Job Demands}};
\node[fwtextnode] at ($\textloc*(a)$) {\uppercase{``passive''\\ job}};
\node[fwtextnode] at ($\textloc*(b)$) {\uppercase{``high strain''\\ job}};
\node[fwtextnode] at ($\textloc*(c)$) {\uppercase{``active''\\ job}};
\node[fwtextnode] at ($\textloc*(d)$) {\uppercase{``low strain''\\ job}};
\node[fwtextnode,text width=1.5cm, minimum width=1.5cm, xshift=1.0cm] at (b1) {Unresolved\\ Strain};
\node[fwtextnode,text width=1.5cm, minimum width=1.5cm, xshift=1.0cm] at (c1) {Activity\\ Level};
\interpnode{a}{d}{0.25}{Low}{anchor=east}
\interpnode{a}{d}{0.75}{High}{anchor=east}
\interpnode{a}{d}{0.5}{Job Decision Latitude}{anchor=east,xshift=-3mm}
\interpnode{b}{c}{0.25}{A}{anchor=west,xshift=3mm}
\interpnode{b}{c}{0.75}{B}{anchor=west,xshift=3mm}
\interpnode{a}{b}{0.25}{Low}{anchor=south}
\interpnode{a}{b}{0.75}{High}{anchor=south}
\end{tikzpicture}
\end{document}
1 Bernard Sep 12 2020 at 01:08
Ein vergleichsweise kurzer Code mit pstricks:
\documentclass[border=6pt]{standalone}
\usepackage{pst-eucl}%
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{pspicture}(-7.58,-3)(7,3)\sffamily\small
\psset{ PointName=none, arrowinset=0.12, linejoin=1}%unit =1.5cm,
\pstGeonode[PointSymbol=none](0,0){c}(0,-2){b}(-4,-2){A}(-4,0){l}(-4,2){B}(0,2){t}(4,2){C}(4,0){r}(4,-2){D}
\psframe(A)(C)\ncline{t}{b}\ncline{l}{r}
% border labels
\psset{linestyle =none}
\ncline{l}{B}\naput{Low}\ncline{B}{t}\naput{Low}
\ncline{C}{r}\naput{\qquad A}\ncline{r}{D}\naput{\qquad B}
\ncline{A}{l}\naput{High}\ncline{t}{C}\naput{Hi\smash{g}h}%
\uput[l](l){Job Decision Latitude \quad}
%%% Diagonals & labels
\psset{nodesepB=-1, linestyle=solid}
\ncline{A}{c}\ncput*{\Centerstack{"LOW STRAIN"\\ JOB}}
\ncline{B}{c}\ncput*{\Centerstack{"PASSIVE"\\ JOB}}
\psset{arrows =->, nodesepB =-1.3,npos=0.3}
\pstLineAB{c}{C}\ncput*{\Centerstack{"HIGH STRAIN"\\ JOB}}
\uput[r](5.2, 2.6){\Centerstack{Unresolved\\ Strain}}
\pstLineAB{c}{D}\ncput*{\Centerstack{"ACTIVE"\\ JOB}}
\uput[r](5.2, -2.6){\Centerstack{Activity\\ Level}}
\end{pspicture}
\end{document}