排版公共交通时刻表

排版公共交通时刻表

我知道德国铁路公司正在使用 (La)TeX 来排版他们的时刻表。是否有任何(免费提供的)软件包可以帮助排版时刻表?我最感兴趣的是连接时刻表,例如:

  • 乘坐 5:45 的 123 号火车从 SomeStation 1 号站台前往 SomeFarAwayStation

  • [105 分钟]

  • 7:30 到达 ChangeStation 3 号站台

  • 步行 150 米到达公交车站 SomeBusStop [3 分钟]
  • 乘坐 7:38 的 987 路公交车前往 SomeFarAwayBusStop 方向
  • ....

所有这些都应该格式化得很漂亮,甚至可能带有一些图标(“公共汽车/火车/...”)。

我喜欢的一个布局是 VGN 的布局:时间表

在此处输入图片描述

答案1

这是一个示例。我编辑了创建环境timetable,它设置了 TABstack,并允许您填写详细信息。我为常规事物添加了各种辅助宏,例如

  1. \firststation\nextstation\laststation为第一列的符号;

  2. \terminus{}以及\waypoint{}终点站和航点站的名称;

  3. \routedetails[<direction modifier>]{<mode>}{<number>}{<direction>}用于路线数据;

  4. \onbus、,\onmetro\ontrain提供各种交通方式的图标;以及

  5. \depart{}\arrive{}\duration{}来计时。

编辑以使用适当的剪贴画

https://www.iconsdb.com/red-icons/bus-icon.html

http://www.clker.com/clipart-subway-blue.html

http://www.softicons.com/web-icons/awt-travel-blue-icons-by-awt-media/train-icon

(请确保使用最新版本的tabstackengine 2018/03/05 (V2.10)

以下 MWE 按原样编译,但如果您下载引用的图标,您也可以取消注释重新定义以获取这些图标,正如我在实际图像中展示的那样。

\documentclass{article}
\usepackage[TABcline]{tabstackengine}
\usepackage{xcolor,graphicx,amssymb,environ}
\newcommand\onbus{\includegraphics[width=2ex,height=2ex]{example-image-a}}% BUS
\newcommand\onmetro{\includegraphics[width=2ex,height=2ex]{example-image-b}}% METRO
\newcommand\ontrain{\includegraphics[width=2ex,height=2ex]{example-image-c}}% TRAIN
% UNCOMMENT THE REDEFINITIONS BELOW IF YOU DOWNLOADED THE ICONS
%% https://www.iconsdb.com/red-icons/bus-icon.html
%\renewcommand\onbus{\includegraphics[width=2ex,height=2ex]{bus-xxl}}
%% http://www.clker.com/clipart-subway-blue.html
%\renewcommand\onmetro{\includegraphics[width=2ex,height=2ex]{subway-blue-md}}
%% http://www.softicons.com/web-icons/awt-travel-blue-icons-by-awt-media/train-icon
%\renewcommand\ontrain{\includegraphics[width=2ex,height=2ex]{AWT-Train}}
%%%%
% THE pt DISTANCES ON NEXT LINE MAY NEED TO VARY WITH FONT AND FONTSIZE
\newcommand\Stellemark[2]{\smash{\stackon[5.5pt]{\stackunder[-.5pt]{$\square$}{%
  \textcolor{blue!70!black}{\rule[-#2]{2\fboxrule}{#2}}}}{%
  \textcolor{blue!70!black}{\rule{2\fboxrule}{#1}}}}\kern-5pt}
\newcommand\terminus[1]{\smash{\textcolor{green!50!black}{\textbf{#1}}}}
% THE \raisebox VALUE ON THE NEXT TWO LINES MAY NEED TO VARY WITH FONT AND FONTSIZE
\newcommand\waypoint[1]{\smash{\raisebox{-4pt}{\terminus{#1}}}\rlap{\hspace{1em}\TABrule}}
\newcommand\nextstation{\smash{\raisebox{-4.4pt}{\Stellemark{14pt}{14pt}}}}
\newcommand\firststation{\Stellemark{0pt}{14pt}}
\newcommand\laststation{\Stellemark{14pt}{0pt}}
\newcommand\duration[1]{\stackunder{}{#1 min.}}
\newcommand\routedetails[4][Richtung:\ ]{#2\ \stackunder{\textbf{#3}}{#1#4}}
\newcommand\depart[1]{ab #1}
\newcommand\arrive[1]{an #1}
\let\svTABrule\TABrule
\NewEnviron{timetable}[1]{%
  \noindent%
  \footnotesize%
  \sffamily%
  \setstackgap{S}{1pt}%
  \renewcommand\stacktype{L}%
  \setstacktabulargap{1em}%
  \def\TABruleshift{-2pt}%
  \fboxrule=1pt\relax%
  \renewcommand\TABrule{\textcolor{green!50!black}{\svTABrule}}%
  \def\tmp{\tabularShortstack{#1}}%
  \expandafter\tmp\expandafter{\BODY}%
}
\begin{document}
\begin{timetable}{cclcclr}
 && \textbf{Haltestelle} & \textbf{Uhrzeit} & \textbf{Gleis} & 
 \textbf{Verkehrsmittel} & \textbf{Dauer}\\
%
 \TABcline{1-7}
%
 \firststation && \terminus{N\"urnberg Flughafen}& \depart{10:22}&& 
 \routedetails{\onmetro}{U2}{R\"othenbach}& \duration{7}\\
%
 &&&\arrive{10:29}&&&\\
%
 \nextstation&\TABrule&\waypoint{N\"urnberg Mooshof}&
 \TABrule&\TABrule&\TABrule&\TABrule\\ 
%
 &&&\depart{10:35} &7& \routedetails{\ontrain}{65}{R\"othenbach} & \duration{6}\\
%
 &&&\arrive{10:41}&12&&\\
%
 \nextstation&\TABrule&\waypoint{N\"urnberg Schoppershof}&
 \TABrule&\TABrule&\TABrule&\TABrule\\ 
%
 &&&\depart{10:45}&&\routedetails[Nur: ]{\onbus}{73}{Dutzendteich}&\duration{11}\\
%
 \laststation && \terminus{N\"urnberg-Dutzendteich} & \arrive{10:56}&&&\\
%
 \TABcline{1-7}
\end{timetable}
\end{document}

在此处输入图片描述

相关内容