想用tikz绘一个章节的结构图,但代码存在问题

2020-06-04 10:01发布

## 编译环境 操作系统 * [x ] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [x ] TexLive ...

## 编译环境 操作系统 * [x ] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [x ] TexLive `年份` * [ ] MikTeX `版本号` * [ ] CTeX `若需勾选,请把[ ]改成[x]` ## 我的问题 a1,b1,c1,d1表示1-4列对应方框内的文本。 将下面的代码修正,或是指出达到效果的代码都可以。多谢了。 `````markdown \documentclass[UTF8]{ctexart} \usepackage{tikz} \usetikzlibrary{shapes,arrows} \begin{document} \begin{tikzpicture}[node distance=10pt] \node[draw, rounded corners] (a1) {有理数}; \node[draw, below=of a1] (a2) {数轴}; \node[draw, below=of a2] (a3) {比较大小}; \node[draw, diamond, aspect=2, rihgt=of a1] (b1) {有理数的运算}; \node[draw, right= of b1] (c1) {加法}; \node[draw, right= of b1] (c3) {乘法}; \node[draw, below=of c1] (c3) {交换律结合律}; \node[draw, below=of c3] (c4) {乘方}; \node[draw, right= of c1] (d1) {减法}; \node[draw, right= of c3] (d2) {分配律}; \node[draw, right= of c3] (d3) {除法}; \draw[->] (a1) -- node[rihgt] {点与数的对应} (a2); \draw[->] (a2) -- (a3); \draw[->] (a1) -- (b1); \draw[->] (b1) -- (b1-|-c1) (c1); \draw[->] (b1) -- (b1-|-c3) (c3); \draw[->] (c1) -- (d1); \draw[-] (c1) -- (c2); \draw[->] (c2) -- (c3); \draw[->] (c3) -- (c4); \draw[->] (c1) -- (d1); \draw[-] (c4) -- (d2); \draw[->] (c4) -- (d3); \end{tikzpicture} \end{document} ``` [![](https://wenda.latexstudio.net/data/attach/200604/l1ysEGRp.PNG)](https://wenda.latexstudio.net/data/attach/200604/l1ysEGRp.PNG)
3条回答
Carcino
2020-06-04 14:36 .采纳回答
只是得到具体的某个图怎么画的解答,不能解决画第二张图时怎么办的问题。还是要回归文档吧。 一个简化输入的尝试 ```tex \documentclass{ctexart} \usepackage{tikz} \usetikzlibrary{positioning, calc, arrows.meta} \makeatletter \tikzset{ x name/.code={% \pgfkeysalso{draw, name={#1}}% \setbox\@tempboxa=\hbox{#1}% \ifdim\wd\@tempboxa<3\ccwd \pgfkeysalso{node contents={\makebox[3\ccwd][s]{#1}}}% \else \pgfkeysalso{node contents={#1}}% \fi }, x name*/.style={ draw, name={#1} } } \makeatother \begin{document} % 限于实现,在 tikzpicture 之前必须有其他中文, % 见 https://github.com/CTeX-org/ctex-kit/issues/517 中文 \begin{tikzpicture}[>={Latex[]}, draw=cyan, minimum width=4\ccwd, node distance=.6cm] \node[x name=有理数]; \node[below=1cm of 有理数, x name=数轴]; \node[below=of 数轴, x name=比较大小]; \node[right=of 有理数, x name=有理数的运算]; \node[dashed, right=1.5cm of 有理数的运算, align=center, x name*=交换律结合律] {交换律\\结合律}; \node[above=of 交换律结合律, x name=加法]; \node[below=of 交换律结合律, x name=乘法]; \node[below=of 乘法, x name=乘方]; \node[right=of 加法, x name=减法]; \node[right=of 交换律结合律, x name=分配律]; \node[right=of 乘法, x name=除法]; \coordinate (x) at ($(有理数的运算.east)!0.5!(交换律结合律.west)$); \path[->, line width=.8pt] (有理数) edge node[right] {点与数的对应} (数轴) edge (有理数的运算) (数轴) edge (比较大小) (x |- 加法) edge (加法) (x |- 乘法) edge (乘法) (加法) edge (减法) (乘法) edge (除法) edge (乘方); \draw[line width=.8pt] (有理数的运算) -- (x) -- (x |- 加法) (x) -- (x |- 乘法) (加法) -- (交换律结合律) -- (乘法) (乘法.north east) -- (分配律); \end{tikzpicture} \end{document} ``` ![](https://wenda.latexstudio.net/data/attach/200604/ycalIAbb.png) 和问题里提供的图片相比较 ![](https://wenda.latexstudio.net/data/attach/200604/l1ysEGRp.PNG)

一周热门 更多>