Nachdem ich einige Beispiele für Knotenmatrizen gelesen hatte, schrieb ich dieses MWE:
\documentclass{article}
\usepackage{tikz}\usetikzlibrary{matrix}
\usepackage{booktabs}
\begin{document}
See the Table \ref{fig:cen2}.
\begin{table}[htb!]
\caption{My very very very very very long useless caption}
\label{fig:cen2}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes in empty cells,
toprule/.style={%
execute at end cell={%
\draw [line cap=rect,#1] (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.north west) -- (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.north east);%
}
},
bottomrule/.style={%
execute at end cell={%
\draw [line cap=rect,#1] (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south west) -- (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east);%
}
},
midrule/.style={%
execute at end cell={%
\draw (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east)--(\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east);%
}
},
%
anchor=base,
row sep = -\pgflinewidth,
column sep = -\pgflinewidth,
%
row 1/.style={nodes={font=\bfseries, align = center}, anchor = south},%toprule = thick
row 2/.style={anchor = south},
row 3/.style={anchor = south},
row 4/.style={anchor = south},
row 5/.style={anchor = south},
%
column 1/.style={nodes={ text width=2.5cm,align=left, font = \small}},
column 2/.style={nodes={ text width=4.0cm,align=left, font = \small}},
column 3/.style={nodes={ text width=4.0cm,align=left, font = \small}},
column 4/.style={nodes={ text width=4.0cm,align=left, font = \small}}%rectangle,draw,
] at (0,0)
%
{%
Variables & Hypothesis 1 & Hypothesis 2 & Hypothesis 3 \\
Territorial unit &
Final destination for receiving waste generated in the municipality &
Final destination for receiving waste generated in the municipality &
Final destination to receive the waste generated in the municipality \\
Index of coverage &
Maintenance of the urban coverage index, with focus on short term &
Maintenance of the urban coverage index, focusing on medium term &
Maintenance of the urban coverage index, with a long-term focus \\
Garbage Collection with Recovery of Recyclable garbage &
Increase in the Recovery of Recyclable garbage index in the short term &
Moderate increase in the recovery of recyclable garbage index with focus on medium term &
Expectation of implementation of long-term selective collection \\
Composting of organic waste &
Adhesion and massive investment in compost disposal final solid organic waste &
Adhesion and moderate investment in composting final disposal of organic solid waste &
Investment in composting organic long-term solid waste \\
};
\draw [-, very thick] (m-1-1.north west) -- (m-1-4.north east);%linha 1
\draw [-, thick] (m-1-4.south east) -- (m-1-1.south west);%linha 2
\draw [-, thin] (m-2-1.south west) -- (m-2-4.south east);%linha 3
\draw [-, thin] (m-3-1.south west) -- (m-3-4.south east);%linha 4
\draw [-, thin] (m-4-1.south west) -- (m-4-4.south east);%linha 5
\draw [-, thick] (m-5-1.south west) -- (m-5-4.south east);%linha 6
%
\draw[->, color = green, ultra thick, dashed] (m-2-2.mid) -- ([yshift = -5mm]m-5-2.south);
\draw[->, color = orange, ultra thick, dashed] (m-2-3.mid) -- ([yshift = -5mm]m-5-3.south);
\draw[->, color = red, ultra thick, dashed] (m-2-4.mid) -- ([yshift = -5mm]m-5-4.south);
%
\node [below, yshift = -5mm] at (m-5-2.south) {\textcolor{green} {\bfseries Scenario 1}};
\node [below, yshift = -5mm] at (m-5-3.south) {\textcolor{orange}{\bfseries Scenario 2}};
\node [below, yshift = -5mm] at (m-5-4.south) {\textcolor{red} {\bfseries Scenario 3}};
\end{tikzpicture}
\end{table}
\end{document}
Aber die Linien in der Matrix sind krumm. Wie kann ich die Linien horizontal anpassen?
Antwort1
ich würde den Tisch anders decken ...
tabularx
Standardtabellenumgebung verwenden- für vertikale gestrichelte Linien verwenden Sie
tikzmark
die Bibliothek - Zelleninhalt oben ausrichten
- Verwenden Sie
raged2e
das Paket, um Text in Zellen besser auszurichten - für horizontale Regeln verwenden
booktabs
, von denen ich nur drei verwenden würde - Verwendung
makecell
für Spaltenüberschriften und "Beschriftungen" am unteren Ende der Tabelle
in Anbetracht des Obigen wird der Tabellencode (meiner Meinung nach) viel kürzer, einfacher und klarer. Um die endgültige Tabelle zu erhalten, müssen Sie den Code natürlich mindestens zweimal kompilieren.
\documentclass{article}
\usepackage{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, calc, tikzmark}
\usepackage{booktabs, makecell, tabularx}
\renewcommand\theadfont{\normalsize\bfseries}
\renewcommand\theadgape{}
\usepackage{ragged2e}
\usepackage[labelfont=bf,
skip=1ex]{caption}
\begin{document}
See the Table \ref{fig:cen2}.
\begin{table}[htb!]
\caption{My very very very very very long useless caption}
\label{fig:cen2}
\small
\begin{tabularx}{\linewidth}{>{\RaggedRight}p{25mm} *{3}{>{\RaggedRight}X}}
\toprule
\thead{Variables} &
\tikzmark{As}\thead{Hypothesis 1}\tikzmark{Ae} &
\tikzmark{Bs}\thead{Hypothesis 2}\tikzmark{Be} &
\tikzmark{Cs}\thead{Hypothesis 3}\tikzmark{Ce} \\
\midrule
Territorial unit &
Final destination for receiving waste generated in the municipality &
Final destination for receiving waste generated in the municipality &
Final destination to receive the waste generated in the municipality \\
\addlinespace
Index of coverage &
Maintenance of the urban coverage index, with focus on short term &
Maintenance of the urban coverage index, focusing on medium term &
Maintenance of the urban coverage index, with a long-term focus \\
\addlinespace
Garbage Collection with Recovery of Recyclable garbage &
Increase in the Recovery of Recyclable garbage index in the short term &
Moderate increase in the recovery of recyclable garbage index with focus on medium term &
Expectation of implementation of long-term selective collection \\
\addlinespace
Composting of organic waste &
Adhesion and massive investment in compost disposal final solid organic waste &
Adhesion and moderate investment in composting final disposal of organic solid waste &
Investment in composting organic long-term solid waste \\
\midrule[\heavyrulewidth]
\addlinespace
&
\tikzmark{AAs}\thead{\textcolor{green}{Scenario 1}}\tikzmark{AAe} &
\tikzmark{BBs}\thead{\textcolor{orange}{Scenario 2}}\tikzmark{BBe}&
\tikzmark{CCs}\thead{\textcolor{red}{Scenario 3}}\tikzmark{CCe}
\end{tabularx}
\begin{tikzpicture}[overlay, remember picture,
line/.style = {draw=#1, line width=1mm, densely dashed, -Straight Barb,
semitransparent, shorten <=5mm, shorten >=3mm}
]
\draw[line=green] ($(pic cs:As)!0.5!(pic cs:Ae)$) -- ($(pic cs:AAs)!0.5!(pic cs:AAe)$);
\draw[line=orange] ($(pic cs:Bs)!0.5!(pic cs:Be)$) -- ($(pic cs:BBs)!0.5!(pic cs:BBe)$);
\draw[line=red] ($(pic cs:Cs)!0.5!(pic cs:Ce)$) -- ($(pic cs:CCs)!0.5!(pic cs:CCe)$);
\end{tikzpicture}
\end{table}
\end{document}
Antwort2
Sie können das Problem beheben, indem Sie hinzufügen \strut
.
\documentclass{article}
\usepackage{tikz}\usetikzlibrary{matrix}
\usepackage{booktabs}
\begin{document}
See the Table \ref{fig:cen2}.
\begin{table}[htb!]
\caption{My very very very very very long useless caption}
\label{fig:cen2}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes in empty cells,
toprule/.style={%
execute at end cell={%
\draw [line cap=rect,#1] (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.north west) -- (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.north east);%
}
},
bottomrule/.style={%
execute at end cell={%
\draw [line cap=rect,#1] (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south west) -- (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east);%
}
},
midrule/.style={%
execute at end cell={%
\draw (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east)--(\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east);%
}
},
%
baseline=base,
row sep = -\pgflinewidth,
column sep = -\pgflinewidth,
%
row 1/.style={nodes={font=\bfseries\strut, align = center}, anchor = south},%toprule = thick
row 2/.style={anchor = south},
row 3/.style={anchor = south},
row 4/.style={anchor = south},
row 5/.style={anchor = south},
%
column 1/.style={nodes={text width=2.5cm,align=left, font = \small\strut}},
column 2/.style={nodes={text width=4.0cm,align=left, font = \small\strut}},
column 3/.style={nodes={text width=4.0cm,align=left, font = \small\strut}},
column 4/.style={nodes={text width=4.0cm,align=left, font = \small\strut}}%rectangle,draw,
] at (0,0)
%
{%
Variables & Hypothesis 1 & Hypothesis 2 &
Hypothesis 3 \\
Territorial unit &
Final destination for receiving waste generated in the municipality &
Final destination for receiving waste generated in the municipality &
Final destination to receive the waste generated in the municipality \\
Index of coverage &
Maintenance of the urban coverage index, with focus on short term &
Maintenance of the urban coverage index, focusing on medium term &
Maintenance of the urban coverage index, with a long-term focus \\
Garbage Collection with Recovery of Recyclable garbage &
Increase in the Recovery of Recyclable garbage index in the short term &
Moderate increase in the recovery of recyclable garbage index with focus on medium term &
Expectation of implementation of long-term selective collection \\
Composting of organic waste &
Adhesion and massive investment in compost disposal final solid organic waste &
Adhesion and moderate investment in composting final disposal of organic solid waste &
Investment in composting organic long-term solid waste \\
};
\draw [-, very thick] (m-1-1.north west) -- (m-1-4.north east);%linha 1
\draw [-, thick] (m-1-4.south east) -- (m-1-1.south west);%linha 2
\draw [-, thin] (m-2-1.south west) -- (m-2-4.south east);%linha 3
\draw [-, thin] (m-3-1.south west) -- (m-3-4.south east);%linha 4
\draw [-, thin] (m-4-1.south west) -- (m-4-4.south east);%linha 5
\draw [-, thick] (m-5-1.south west) -- (m-5-4.south east);%linha 6
%
\draw[->, color = green, ultra thick, dashed] (m-2-2.mid) -- ([yshift = -5mm]m-5-2.south);
\draw[->, color = orange, ultra thick, dashed] (m-2-3.mid) -- ([yshift = -5mm]m-5-3.south);
\draw[->, color = red, ultra thick, dashed] (m-2-4.mid) -- ([yshift = -5mm]m-5-4.south);
%
\node [below, yshift = -5mm] at (m-5-2.south) {\textcolor{green} {\bfseries Scenario 1}};
\node [below, yshift = -5mm] at (m-5-3.south) {\textcolor{orange}{\bfseries Scenario 2}};
\node [below, yshift = -5mm] at (m-5-4.south) {\textcolor{red} {\bfseries Scenario 3}};
\end{tikzpicture}
\end{table}
\end{document}
\begin{table}[htb!]
\caption{My very very very very very long useless caption}
\label{fig:cen2}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes in empty cells,
toprule/.style={%
execute at end cell={%
\draw [line cap=rect,#1] (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.north west) -- (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.north east);%
}
},
bottomrule/.style={%
execute at end cell={%
\draw [line cap=rect,#1] (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south west) -- (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east);%
}
},
midrule/.style={%
execute at end cell={%
\draw (\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east)--(\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn.south east);%
}
},
%
baseline=base,
row sep = -\pgflinewidth,
column sep = -\pgflinewidth,
%
row 1/.style={nodes={font=\bfseries\strut, align = center}, anchor = south},%toprule = thick
row 2/.style={anchor = south},
row 3/.style={anchor = south},
row 4/.style={anchor = south},
row 5/.style={anchor = south},
%
column 1/.style={nodes={ text width=2.5cm,align=left, font = \small\strut}},
column 2/.style={nodes={ text width=4.0cm,align=left, font = \small\strut}},
column 3/.style={nodes={ text width=4.0cm,align=left, font = \small\strut}},
column 4/.style={nodes={ text width=4.0cm,align=left, font = \small\strut}}%rectangle,draw,
] at (0,0)
%
{%
Variables & Hypothesis 1 & Hypothesis 2 &
Hypothesis 3 \\
Territorial unit &
Final destination for receiving waste generated in the municipality &
Final destination for receiving waste generated in the municipality &
Final destination to receive the waste generated in the municipality \\
Index of coverage &
Maintenance of the urban coverage index, with focus on short term &
Maintenance of the urban coverage index, focusing on medium term &
Maintenance of the urban coverage index, with a long-term focus \\
Garbage Collection with Recovery of Recyclable garbage &
Increase in the Recovery of Recyclable garbage index in the short term &
Moderate increase in the recovery of recyclable garbage index with focus on medium term &
Expectation of implementation of long-term selective collection \\
Composting of organic waste &
Adhesion and massive investment in compost disposal final solid organic waste &
Adhesion and moderate investment in composting final disposal of organic solid waste &
Investment in composting organic long-term solid waste \\
};
\draw [-, very thick] (m-1-1.north west) -- (m-1-4.north east);%linha 1
\draw [-, thick] (m-1-4.south east) -- (m-1-1.south west);%linha 2
\draw [-, thin] (m-2-1.south west) -- (m-2-4.south east);%linha 3
\draw [-, thin] (m-3-1.south west) -- (m-3-4.south east);%linha 4
\draw [-, thin] (m-4-1.south west) -- (m-4-4.south east);%linha 5
\draw [-, thick] (m-5-1.south west) -- (m-5-4.south east);%linha 6
%
\draw[->, color = green, ultra thick, dashed] (m-2-2.mid) -- ([yshift = -5mm]m-5-2.south);
\draw[->, color = orange, ultra thick, dashed] (m-2-3.mid) -- ([yshift = -5mm]m-5-3.south);
\draw[->, color = red, ultra thick, dashed] (m-2-4.mid) -- ([yshift = -5mm]m-5-4.south);
%
\node [below, yshift = -5mm] at (m-5-2.south) {\textcolor{green} {\bfseries Scenario 1}};
\node [below, yshift = -5mm] at (m-5-3.south) {\textcolor{orange}{\bfseries Scenario 2}};
\node [below, yshift = -5mm] at (m-5-4.south) {\textcolor{red} {\bfseries Scenario 3}};
\end{tikzpicture}
\end{table}
\end{document}
Aber ich muss zugeben, dass ich auch verloren bin (wie Zarko im Winterschlaf;-), weil Sie spaltenweise und zeilenweise Anweisungen überlagern. Bevor ich die unteren Zellen behebe, müsste ich wissen, welche Ausrichtung Sie nach oben zielen.
Antwort3
Ich wollte das matrixcells
Paket vorschlagen, aber als ich dann auf dieser Site nach der ursprünglichen Frage suchte, die dieses Paket ausgelöst hatte, fand ich heraus, dass jemand einige der Probleme mit diesem Paket behoben hatte. Daher empfehle ich die Verwendung desmatrix.skeleton
Paket (vonMatrixzellenproblem nur mit der Y-Achse) stattdessen.
Ich habe ein bisschen ungenutzten Code entfernt.
\documentclass{article}
%\url{https://tex.stackexchange.com/q/415345/86}
\usepackage{tikz}\usetikzlibrary{matrix}
\usepackage{booktabs}
\usetikzlibrary{matrix.skeleton}
\begin{document}
See the Table \ref{fig:cen2}.
\begin{table}[htb!]
\caption{My very very very very very long useless caption}
\label{fig:cen2}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes in empty cells,
label skeleton,
%
anchor=base,
row sep = -\pgflinewidth,
column sep = -\pgflinewidth,
%
row 1/.style={nodes={font=\bfseries, align = center}, anchor = south},%toprule = thick
row 2/.style={anchor = south},
row 3/.style={anchor = south},
row 4/.style={anchor = south},
row 5/.style={anchor = south},
%
column 1/.style={nodes={ text width=2.5cm,align=left, font = \small}},
column 2/.style={nodes={ text width=4.0cm,align=left, font = \small}},
column 3/.style={nodes={ text width=4.0cm,align=left, font = \small}},
column 4/.style={nodes={ text width=4.0cm,align=left, font = \small}}%rectangle,draw,
] at (0,0)
%
{%
Variables & Hypothesis 1 & Hypothesis 2 & Hypothesis 3 \\
Territorial unit &
Final destination for receiving waste generated in the municipality &
Final destination for receiving waste generated in the municipality &
Final destination to receive the waste generated in the municipality \\
Index of coverage &
Maintenance of the urban coverage index, with focus on short term &
Maintenance of the urban coverage index, focusing on medium term &
Maintenance of the urban coverage index, with a long-term focus \\
Garbage Collection with Recovery of Recyclable garbage &
Increase in the Recovery of Recyclable garbage index in the short term &
Moderate increase in the recovery of recyclable garbage index with focus on medium term &
Expectation of implementation of long-term selective collection \\
Composting of organic waste &
Adhesion and massive investment in compost disposal final solid organic waste &
Adhesion and moderate investment in composting final disposal of organic solid waste &
Investment in composting organic long-term solid waste \\
};
\draw [-, very thick] (m-row-1.north west) -- (m-row-1.north east);%linha 1
\draw [-, thick] (m-row-2.north west) -- (m-row-2.north east);%linha 2
\draw [-, thin] (m-row-3.north west) -- (m-row-3.north east);%linha 3
\draw [-, thin] (m-row-4.north west) -- (m-row-4.north east);%linha 4
\draw [-, thin] (m-row-5.north west) -- (m-row-5.north east);%linha 5
\draw [-, thick] (m-row-5.south west) -- (m-row-5.south east);%linha 6
%
\draw[->, color = green, ultra thick, dashed] (m-2-2.mid) -- ([yshift = -5mm]m-5-2.south);
\draw[->, color = orange, ultra thick, dashed] (m-2-3.mid) -- ([yshift = -5mm]m-5-3.south);
\draw[->, color = red, ultra thick, dashed] (m-2-4.mid) -- ([yshift = -5mm]m-5-4.south);
%
\node [below, yshift = -5mm] at (m-5-2.south) {\textcolor{green} {\bfseries Scenario 1}};
\node [below, yshift = -5mm] at (m-5-3.south) {\textcolor{orange}{\bfseries Scenario 2}};
\node [below, yshift = -5mm] at (m-5-4.south) {\textcolor{red} {\bfseries Scenario 3}};
\end{tikzpicture}
\end{table}
\end{document}