![如何使用 schemabloc 包绘制自上而下的框图(流程图)](https://linux22.com/image/242162/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20schemabloc%20%E5%8C%85%E7%BB%98%E5%88%B6%E8%87%AA%E4%B8%8A%E8%80%8C%E4%B8%8B%E7%9A%84%E6%A1%86%E5%9B%BE%EF%BC%88%E6%B5%81%E7%A8%8B%E5%9B%BE%EF%BC%89.png)
我看了一些绘制流程图的例子,所以我选择了schemabloc 包。在我使用它的过程中,我注意到,所有块都是从左到右或从右到左连接的。虽然块可以放置在主线的上方或下方,但箭头仍然在其左边缘或右边缘的中点处连接到它们。
我的框图不适合这种方式,所以我想做一个从上到下的框图。我可以用什么方法做到这一点schemabloc
?
所以我举个例子:
\documentclass{article}
\usepackage{graphicx,schemabloc}
\usetikzlibrary{circuits}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\sbEntree{start}
\sbBloc{block}{Block}{start}
\sbRelier[input]{start}{block}
\sbSortie{end}{block}
\sbRelier[output]{block}{end}
\end{tikzpicture}
\end{figure}
\end{document}
就是这样。它在桌面上为我编译。
答案1
由于文档只有法语,我不知道调整它的官方方法,但这里有一个可以产生更好输出的黑客解决方案:
\documentclass{article}
\usepackage{graphicx,schemabloc}
\usetikzlibrary{circuits}
\newcommand{\Spacing}{\phantom{ab}}%
\begin{document}
\begin{figure}
\begin{tikzpicture}
\sbEntree{start}
\sbBloc{block}{Block}{start}
\sbRelier[input\Spacing]{start}{block}
\sbSortie{end}{block}
\sbRelier[\Spacing output]{block}{end}
\end{tikzpicture}
\end{figure}
\end{document}
答案2
schemabloc
设计时考虑了控制系统框图表示,而实际上并没有指向块底部顶部的箭头(加法器除外)。
不幸的是,这就是为什么无法强制箭头schemabloc
从块的底部或顶部开始,这是包的实现方式。您可以从包源文件中复制代码并编辑副本以满足您的需求(我认为,如果对此有一定的了解,这TikZ
并不是什么大问题),或者您可以使用垂直排列的块来绘制图表,但箭头是横向的:
\documentclass{article}
\usepackage{graphicx,schemabloc}
\usetikzlibrary{circuits}
\begin{document}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}
\sbRelier[$E_1$]{E}{comp}
\sbBloc{sys}{Systeme}{comp}
\sbRelier[u]{comp}{sys}
\sbSortie{S}{sys}
\sbRelier{sys}{S}
\sbDecaleNoeudy[4]{S}{U}
\sbBlocr{cap}{Capteur}{U}
\sbRelieryx{sys-S}{cap}
\sbDecaleNoeudy[8]{comp}{D}
\sbBlocL[6]{U}{Other}{D}
\sbSortie{S2}{U}
\sbRelier[$S_2$]{U}{S2}
\sbRelieryx{cap}{U}
\end{tikzpicture}
\end{document}
这可能不是你真正想要的:
笔记:可选参数 in\sbBlocL[6]{U}{Other}{D}
是块前箭头的长度。长度 inschemabloc
均以 em 为单位,无法直接指定其他单位(根据文档)。
答案3
Schémabloc 包允许一些垂直链接,但需要对块的垂直定位进行一点“欺骗”。
这样合适吗?
\documentclass{文章} \usepackage{tikz} \usepackage{schemabloc} \开始{文档} {\定心 \开始{tikzpicture} \sbEntree{E} \sbBlocL[5]{H1}{$H_1$}{E} \sbBlocL{H2}{$H_2$}{H1} \sbDecaleNoeudy[4]{H2}{H3} \sbBloc[3]{H3}{$H_3$}{H3} \sbRelierxy[aa]{H2}{H3} \sbDecaleNoeudy[10]{H2}{H4} \sbBloc[3]{H4}{$H_4$}{H4} \sbRelier[bb]{H3}{H4} \sbDecaleNoeudy[4]{H4}{H5} \sbBloc[3]{H5}{$H_5$}{H5} \sbRelieryx{H4}{H5} \sbBlocL{H6}{$H_6$}{H5} \结束{tikzpicture} } \结束{文档}