如何制作交通场景

如何制作交通场景

我正在尝试用 LaTeX 制作交通图表。我想要的图表如下所示。

在此处输入图片描述

答案1

似乎有一个部分解决方案表格单元格中的对角线。那里的示例使用 TikZ 来生成对角线。但是,我发现在 TikZ 中构建整个表格有点太繁琐了。我的解决方案是嵌套表格环境并定义一种新的列类型(以避免行中出现难看的断行)。这是我的代码——希望它不会太笨重。我省略了对角线:有关此内容,请参阅上面的链接。

\documentclass{article}
\usepackage{array}
\newcolumntype{C}{@{}c@{}}
\newcommand{\bottombox}[1]{\makebox[2em][r]{#1}\hspace*{\tabcolsep}\hspace*{2em}}%
\newcommand{\innerbox}[2]{%
    \begin{tabular}[b]{c|c}
       \rule{2em}{0pt}\rule[-2ex]{0pt}{5ex} & \makebox[2em]{#2} \\\cline{2-2}
       \multicolumn{2}{r}{{#1}\hspace*{1.5\tabcolsep}\hspace*{2em}\rule[-2ex]{0pt}{5ex}}
    \end{tabular}}
\renewcommand{\arraystretch}{1.25}
\begin{document}

   \begin{tabular}{c|C|C|C|r}\hline
          & A                 & B                 & C                 & Supply  \\\hline
   1      & \innerbox{}{12}   & \innerbox{}{10}   & \innerbox{600}{6} &   600   \\\hline
   2      & \innerbox{400}{4} & \innerbox{}{15}   & \innerbox{}{3}    &   400   \\\hline
   3      & \innerbox{300}{9} & \innerbox{}{7}    & \innerbox{}{M}    &   300   \\\hline
   4      & \innerbox{}{11}   & \innerbox{500}{8} & \innerbox{300}{6} &   800   \\\hline
   Dummy  & \innerbox{200}{0} & \innerbox{}{0}    & \innerbox{}{0}    &   200   \\\hline
   Demand & \bottombox{900}   & \bottombox{500}   & \bottombox{900}   & 2,300   \\\hline
   \end{tabular}

\end{document}

答案2

看起来这可以用蒂克兹。 你可以

  • matrix of nodes为所有条目构建。这里我指的是位于矩阵中的小条目,而不是大单元格。

  • 矩阵中的每个单元格都可用于绘制线条。因此,即使目前还没有自动化的方法,您也可以自己在节点之间用蓝色绘制所有线条,并根据需要进行锚定。

  • 为了更清晰的代码和可重用性,定义样式,例如节点样式(某些数字的斜体字体、其他条目的粗体字体、框架条目、节点中的文本对齐)。

如果您能更新您的问题,展示您在决定如何解决问题后所做的努力,我们就能更好地帮助您。

答案3

我添加了对角线部分(至/从)。谢谢 Ellett

  \documentclass{article}
  \usepackage{array}
  \usepackage{tikz}
  \newcommand\diag[4]{%
  \multicolumn{1}{p{#2}|}{\hskip-\tabcolsep
  $\vcenter{\begin{tikzpicture}[baseline=0,anchor=south west,inner sep=#1]
  \path[use as bounding box] (0,0) rectangle (#2+2\tabcolsep,\baselineskip);
  \node[minimum width={#2+2\tabcolsep},minimum height=\baselineskip+\extrarowheight] (box) {};
  \draw (box.north west) -- (box.south east);
  \node[anchor=south west] at (box.south west) {#3};
  \node[anchor=north east] at (box.north east) {#4};
  \end{tikzpicture}}$\hskip-\tabcolsep}}


    \newcolumntype{C}{@{}c@{}}
    \newcommand{\bottombox}[1]{\makebox[2em][r]{#1}\hspace*{\tabcolsep}\hspace*{2em}}%
    \newcommand{\innerbox}[2]{%
        \begin{tabular}[b]{c|c}
           \rule{2em}{0pt}\rule[-2ex]{0pt}{5ex} & \makebox[2em]{#2} \\\cline{2-2}
           \multicolumn{2}{r}{{#1}\hspace*{1.5\tabcolsep}\hspace*{2em}\rule[-2ex]{0pt}{5ex}}
        \end{tabular}}
    \renewcommand{\arraystretch}{1.25}
    \begin{document}

       \begin{tabular}{c|C|C|C|r}\hline
       \diag{.1em}{1.5cm}{From}{To}& A         & B     & C         & Supply  \\\hline
       1      & \innerbox{}{12}   & \innerbox{}{10}   & \innerbox{600}{6} &   600   \\\hline
       2      & \innerbox{400}{4} & \innerbox{}{15}   & \innerbox{}{3}    &   400   \\\hline
       3      & \innerbox{300}{9} & \innerbox{}{7}    & \innerbox{}{M}    &   300   \\\hline
       4      & \innerbox{}{11}   & \innerbox{500}{8} & \innerbox{300}{6} &   800   \\\hline
       Dummy  & \innerbox{200}{0} & \innerbox{}{0}    & \innerbox{}{0}    &   200   \\\hline
       Demand & \bottombox{900}   & \bottombox{500}   & \bottombox{900}   & 2,300   \\\hline
       \end{tabular}

    \end{document}

相关内容