我已经尝试了所有的 tex 论坛以及 texwelt.de,但是我找不到在乳胶中绘制以下内容的简单方法。
大家有什么想法吗?
更新:我已经到达此处。
\documentclass{book}
\usepackage{parskip}
\usepackage{tikz,pgf}
\usetikzlibrary{matrix,backgrounds}
\usetikzlibrary{3d}
\begin{document}
\begin{tikzpicture}[x=(15:.5cm), y=(90:.5cm), z=(330:.5cm), >=stealth]
\foreach \z in {5,8}
\foreach \x in {0,...,1}
\foreach \y [evaluate={\b=random(0, 1);}] in {0,...,3}
\filldraw [fill=none] (\x, \y, \z) -- (\x+1, \y, \z) -- (\x+1, \y+1, \z) --
(\x, \y+1, \z) -- cycle (\x+.5, \y+.5, \z) node [yslant=tan(15)] {\b};
\draw (0, 0, 5) -- (0, 0, 8);
\draw (2, 0, 5) -- (2, 0, 8);
\draw [dashed] (0, 4, 5) -- (0, 4, 8);
\draw [dashed] (2, 4, 5) -- (2, 4, 8);
\end{tikzpicture}
答案1
可能是这样的吗?
我从您的代码开始,但我以前tikz-3dplot
会自己计算。我们绘制两个矩阵:一个在图层上background
,一个在main
图层上(这是默认设置)。阴影侧线也放置在背景中。
进一步描述一下这个图表可能会有所帮助。我做了几件我不需要做的事情,只是因为发生的事情并不明显。
矩阵被命名,以便可以使用其中的节点来定义应在侧面着色的区域。背景是b
;另一个是f
。因此循环连接b-1-1
到f-1-1
,依此类推,适用于所有单元格。我们跳过每个中间的一列,以便两个垂直列具有类似于目标分隔的东西。使用粗线line width
来draw opacity=0
创建较小的水平间隙。(如果您愿意,您还可以摆弄行和列分隔 - 请参阅 Ti钾Z 手册。
\documentclass[border=10pt]{standalone}
\usepackage{tikz,tikz-3dplot,calc}
\usetikzlibrary{matrix,backgrounds}
\begin{document}
\tdplotsetmaincoords{70}{110}%
\newlength\mylength\settowidth\mylength{\Large$99$}\newlength\mywidth\settototalheight\mywidth{\Large$99$}\ifdim\mywidth>\mylength\setlength\mylength{\mywidth}\fi
\tikzset{%
my matrix/.style={%
matrix of math nodes,
nodes={line width=2.5pt, fill opacity=.85, font=\Large, text width=\mylength, text centered, text height=\mylength, text depth=0mm, draw, draw opacity=0, text opacity=1, fill=#1 }
}
}%
\begin{tikzpicture}
[
tdplot_main_coords,
]
\begin{scope}[on background layer]
\matrix (b) [my matrix=black!75] at (-1,0,0) { 7 && 8 \\ 9 && 10 \\ 11 && 12\\};
\end{scope}
\matrix (f) [my matrix=gray!10] at (0,0,0) { 1 && 2 \\ 3 && 4 \\ 5 && 6\\};
\begin{scope}[on background layer]
\foreach \i in {3,1} \foreach \j in {3,2,1} \foreach \k/\m/\n/\l in {south west/north west/45/-45,south east/north east/135/-135} \fill [gray!20, fill opacity=.5] ([shift=(\n:1.25pt)]f-\j-\i.\k) -- ([shift=(\n:1.25pt)]b-\j-\i.\k) -- ([shift=(\l:1.25pt)]b-\j-\i.\m) -- ([shift=(\l:1.25pt)]f-\j-\i.\m) -- cycle;
\end{scope}
\end{tikzpicture}
\end{document}