我想在乳胶中创建一个像这样的表格:
在 Inkscape 中导出为 pdf + tex 无法提供适当的结果。为了在 Latex 中实现类似的效果,我开始绘制如下的 MWE,但这不会在正确的位置渲染(除了细微的差异)垂直箭头。想知道这是否是我想要实现的正确框架。
\documentclass{article}
\usepackage{tikz} % Vector Graphis, Arrows
\usetikzlibrary{arrows.meta,shapes.arrows}
\newcommand*{\tknode}[1]{\tikz[remember picture]\node (#1) {};}
\usepackage{rotating}
\begin{document}
\tikzset{tipA/.tip={Triangle[open,angle=45:4pt]},}
\begin{table}[!t]
\renewcommand{\arraystretch}{1.1}
\centering
\begin{tabular*}{\columnwidth}{ @{\extracolsep{\fill}} l l p{0.12\columnwidth} r}
\begin{turn}{-270}objective -- observed action\tknode{1}\end{turn} & \multicolumn{3}{c}{\textbf{Motion}} \\
& \emph{automatic}\tknode{5} & \tknode{6} [1] \tknode{7} & \tknode{8}\emph{autonomic} \\
& \parbox[t]{0.40\columnwidth}{\textbf{simple}\\ structured, repetitive, rigid, rotary or translatory [36]}
& \parbox[b]{0.10\columnwidth}{[23]}
& \parbox[t]{0.40\columnwidth}{\textbf{complex}\\ spontaneous, relative to others, streaky[35]} \\
& \parbox[t]{0.40\columnwidth}{\textbf{simple2}\\ structured, repetitive, rigid, rotary or translatory [36]}
& \parbox[b]{0.10\columnwidth}{[23]}
& \parbox[t]{0.40\columnwidth}{\textbf{complex2}\\ spontaneous, relative to others, streaky[35]} \\
& \multicolumn{3}{c}{\hspace{-1em}\textbf{Agency}} \\
& \emph{mechancial}\tknode{9} & \tknode{10} [34] \tknode{11} & \tknode{12}\emph{intentional} \\
& \parbox[t]{0.40\columnwidth}{\textbf{causality}\\ whatever text comes here and more [36]}
& \parbox[b]{0.10\columnwidth}{[13]}
& \parbox[t]{0.40\columnwidth}{\textbf{animacy}\\ more text here in with references[35]}\\
& \parbox[t]{0.40\columnwidth}{\textbf{causality2}\\ whatever text comes here and more [36]}
& \parbox[b]{0.10\columnwidth}{[13] }
& \parbox[t]{0.40\columnwidth}{\textbf{animacy2}\\ more text here in with references[35]}\\
\begin{turn}{-270}subjective -- interpreted action\tknode{2}\end{turn} \\
\end{tabular*}
\tikz[remember picture,overlay, <=stealth',bend angle=45]
{ \draw[thick, black, tipA-] (1.east) -- (2.west); %\draw[thick,black, -tipA] (3.east) -- (4.west);
\draw[thin,black] (5.east) -- (6.west); \draw[thin,black] (7.east) -- (8.west);
\draw[thin,black] (9.east) -- (10.west); \draw[thin,black] (11.east) -- (12.west);
}
\end{table}
\end{document}
由于一些概念上的变化,我不得不修改表格的布局使其看起来像这样:
这是通过调整下面@cfr 提供的示例来实现的,以获得所需的结果。然而,这感觉很像黑客行为,让我怀疑是否有更优雅的方式来做到这一点。
\documentclass{article}
\usepackage{tikz,geometry,array,tabularx,rotating}
\usetikzlibrary{arrows.meta,tikzmark}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\tikzset{
tipA/.tip={Triangle[open,angle=45:4pt]},
across arrow/.style={tipA-tipA, thick, shorten >=2.5pt, shorten <=2.5pt, every node/.style={midway, above, font=\Large}},
vertical bar/.style={Bar-Bar, thick, draw=gray},
vertical labels/.style={text=gray},
vertical headers/.style={vertical labels, font=\Large},
}
\begin{table}[!t]
\renewcommand{\arraystretch}{1.1}%
\sffamily
\noindent
\tikzmark{c}%
\hspace*{.1\linewidth}%
\begin{tabularx}{.8\linewidth}{L P{.25\linewidth} R}
\tikzmark{a}\Large automatic\tikzmark{5} && \tikzmark{8}\Large autonomic \tikzmark{d} \\
\textbf{simple} && \textbf{complex} \\
structured, repetitive, rigid, rotary or translatory [36]
&& spontaneous, relative to others, streaky [35] \\
\textbf{simple2} && \textbf{complex2} \\
structured, repetitive, rigid, rotary or translatory [36]
&& spontaneous, relative to others, streaky [35] \\[1.5\bigskipamount]
\Large mechancial\tikzmark{9} && \tikzmark{12}\Large intentional \\
\textbf{causality} && \textbf{animacy} \\
whatever text comes here and more [36]
&& more text here in with references [35] \\
\textbf{causality2} && \textbf{animacy2} \\
whatever text comes here and more [36]\tikzmark{b}
&& more text here in with references [35] \\
\end{tabularx}
\hspace*{.1\linewidth}%
\tikz[remember picture, overlay, >=tipA, bend angle=45]
{%
\foreach \i in {5,8,9,12} \coordinate [yshift=1ex] (\i) at ({pic cs:\i});
\foreach \i in {a,b,c,d} \coordinate (\i) at ({pic cs:\i});
\draw[across arrow] (5) -- (8) node (m) {Motion};
\draw[across arrow] (9) -- (12) node (a) {Agency};
\path[vertical bar] ([xshift=4.5ex]c |- m.north) edge node[vertical headers, xshift=-2.2ex, rotate=90] (ina) {inanimate} ([xshift=4.5ex]c |- b);
\node [vertical labels, align=center, xshift=3.6ex, rotate=90] at (ina) {non-living};
\path[vertical bar] ([xshift=3.5ex]d |- m.north) edge node[vertical headers, xshift=1.8ex, rotate=90] (an) {animate} ([xshift=3.5ex]d |- b);
\node [vertical labels, align=center, xshift=-3.4ex, rotate=90] at (an) {living};
}
\end{table}
\end{document}
答案1
在此处发布的内容不应被理解为对该图表实质性内容的认可,我确信我会拒绝。
您可以尝试类似这样的方法。由于您的示例不完整,我不得不进行一些替换才能编译它。特别是,我使用的是标准tikzmark
库。
这给出了一个未满框警告。现在,我一片空白,不知道为什么,但如果我发布代码,也许其他人可以告诉我。
\documentclass{article}
\usepackage{tikz,geometry,array,tabularx,rotating}
\usetikzlibrary{arrows.meta,tikzmark}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\begin{document}
\tikzset{
tipA/.tip={Triangle[open,angle=45:4pt]},
across arrow/.style={tipA-tipA, thick, shorten >=2.5pt, shorten <=2.5pt, every node/.style={midway, above, font=\Large}},
vertical arrow/.style={tipA-tipA, thick, draw=gray, shorten >=2.5pt, shorten <=2.5pt},
vertical labels/.style={text=gray},
vertical headers/.style={vertical labels, font=\Large},
}
\begin{table}[!t]
\renewcommand{\arraystretch}{1.1}%
\sffamily
\noindent
\tikzmark{c}%
\hspace*{.1\linewidth}%
\begin{tabularx}{.9\linewidth}{L p{.25\linewidth} R}
\tikzmark{a}\Large automatic\tikzmark{5} && \tikzmark{8}\Large autonomic \\
\textbf{simple} && \textbf{complex}\\
structured, repetitive, rigid, rotary or translatory [36]
&& spontaneous, relative to others, streaky [35] \\
\textbf{simple2} && \textbf{complex2}\\
structured, repetitive, rigid, rotary or translatory [36]
&& spontaneous, relative to others, streaky [35] \\[1.5\bigskipamount]
\Large mechancial\tikzmark{9} && \tikzmark{12}\Large intentional \\
\textbf{causality} && \textbf{animacy}\\
whatever text comes here and more [36]
&& more text here in with references [35]\\
\textbf{causality2} && \textbf{animacy2} \\
whatever text comes here and more [36]\tikzmark{b}
&& more text here in with references [35]\\
\end{tabularx}
\tikz[remember picture, overlay, >=tipA, bend angle=45]
{%
\foreach \i in {5,8,9,12} \coordinate [yshift=1ex] (\i) at ({pic cs:\i});
\foreach \i in {a,b,c} \coordinate (\i) at ({pic cs:\i});
\draw[across arrow] (5) -- (8) node (m) {Motion};
\draw[across arrow] (9) -- (12) node (a) {Agency};
\node (s) [vertical headers, align=right, anchor=north east, rotate=90] at (c |- m.north) {subjective};
\node (o) [vertical headers, align=left, anchor=north west, rotate=90] at ([yshift=-1.5ex]c |- b) {\Large objective};
\draw[vertical arrow] (o.east) -- (s.west);
\node [vertical labels, align=right, anchor=north east, rotate=90] at (s.south east) {interpreted action};
\node [vertical labels, align=left, anchor=north west, rotate=90] at (o.south west) {observed action};
}
\end{table}
\end{document}