我在 latex 中找到了几个关于火车的主题,但一直找不到解决我的问题的方法。事实上,我需要画一列火车,里面有几节车厢,车厢里有几列火车。
我找到的唯一代码是此链接这个想法是,同一辆车的列车组之间的线路较短,而每辆车之间的线路较长。
\tikz\graph[nodes=draw, grow right=14mm] { "$1$" -- "$2$"--"$3$"};
多谢!
答案1
直接绘制这样的火车tikz
并获得您想要的任何尺寸是相当简单的。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=.5]
\draw [fill=blue!20] (0,0) rectangle (3,2) node[midway]{1} ;
\draw (3,1) -- (3.5,1);
\draw [fill=blue!20] (3.5,0) rectangle (6.5,2) node[midway]{2};
\draw (6.5,1) -- (11,1);
\draw [fill=blue!20] (11,0) rectangle (14,2) node[midway]{1};
\end{tikzpicture}
\end{document}
或者您可以只使用\framebox
和\rule
(同样,您可以根据需要调整宽度)。
\documentclass{article}
\newcounter{trainnumber}
\setcounter{trainnumber}{1}
\newcommand\train{\framebox[.75cm]{\arabic{trainnumber}}\stepcounter{trainnumber}}
\newcommand\link{\raisebox{.75ex}{\rule{.25cm}{.5pt}}}
\newcommand\connect{\raisebox{.75ex}{\rule{1cm}{.5pt}}\setcounter{trainnumber}{1}}
\begin{document}
\train\link\train\connect\train
\end{document}
答案2
使用chains
库。这个想法是使用两个嵌套\foreach
命令(基本上是循环),外部命令用于“汽车”,内部命令用于“列车组”。在代码中,i
迭代“汽车”列表并j
迭代“汽车”中的“列车组”列表。同样使用该if
语句,我们增加了两个连续“汽车”的最后一个和第一个“列车组”之间的距离。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[
mbox/.style={
draw,
text width=2em,
align=center,
minimum height=1.5em,
join,
fill=cyan!20
},
start chain=going right,
every join/.style=-,
node distance=2mm
]
\foreach \i in {1,...,2} % i for no of cars
{
\foreach \j in {1,...,3} % j for no of trainsets in a car
{
\ifnum\j=1
\begin{scope}[node distance=10mm]
\node [mbox, on chain] {\j};
\end{scope}
\else
\node [mbox, on chain] {\j};
\fi
}
}
\end{tikzpicture}
\end{document}