是否可以在 LaTeX 代码中使用 vhdl 来获取框图?
\package{vhdltoblockdiagram}
% ...
\begin{vhdl}
% entity Comp is generic ( n : natural := 2 );
% port (
% A : in std_logic_vector(n-1 downto 0);
% B : in std_logic_vector(n-1 downto 0);
% greater : out std_logic;
% less : out std_logic;
%--bottom--
% equal : out std_logic;
%);
%end Comp;
\end{vhdl}
结果如下: http://vhdltolatex.mamikon.net/
如何在不说明元素位置的情况下定义框图?我想要一个自动布局。
答案1
我不知道 vhdl,因此我不确定这是否能回答你的问题。
如果由于节点前后元素较多/较少而想改变图表item
,则只需从左/右矩阵中添加/删除元素,更改划分的因子\myheight
并调整\foreach
条件。
\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning, arrows.meta}
\newlength{\myheight}
\setlength{\myheight}{2.5cm}
\tikzset{labels/.style={font=\sffamily\scriptsize},
circuit/.style={draw,minimum width=2cm,minimum height=\myheight,very thick,inner sep=1mm,outer sep=0pt,cap=round,font=\sffamily\bfseries},
triangle 45/.tip={Triangle[angle=45:8pt]}
}
\begin{document}
\begin{figure}[htb]
\centering
\begin{tikzpicture}[font=\sffamily,>=triangle 45]
\node [circuit] (item) {Comp};
\matrix[
matrix of nodes,
left= of item,
row sep=\myheight/5,
nodes={anchor=east}
] (rightmatr) {
A\\
B\\
};
\matrix[
matrix of nodes,
right= of item,
row sep=\myheight/6,
nodes={anchor=west}
] (leftmatr) {
greater\\
less\\
equal\\
};
\foreach \i in {1,2}
\draw [->] (rightmatr-\i-1) -- (rightmatr-\i-1 -| item.west);
\foreach \i in {1,2,3}
\draw [<-] (leftmatr-\i-1) -- (leftmatr-\i-1 -| item.east);
\end{tikzpicture}
\caption{Entity of Comp}
\end{figure}
\end{document}