![排版公共交通时刻表](https://linux22.com/image/373744/%E6%8E%92%E7%89%88%E5%85%AC%E5%85%B1%E4%BA%A4%E9%80%9A%E6%97%B6%E5%88%BB%E8%A1%A8.png)
我知道德国铁路公司正在使用 (La)TeX 来排版他们的时刻表。是否有任何(免费提供的)软件包可以帮助排版时刻表?我最感兴趣的是连接时刻表,例如:
乘坐 5:45 的 123 号火车从 SomeStation 1 号站台前往 SomeFarAwayStation
[105 分钟]
7:30 到达 ChangeStation 3 号站台
- 步行 150 米到达公交车站 SomeBusStop [3 分钟]
- 乘坐 7:38 的 987 路公交车前往 SomeFarAwayBusStop 方向
- ....
所有这些都应该格式化得很漂亮,甚至可能带有一些图标(“公共汽车/火车/...”)。
我喜欢的一个布局是 VGN 的布局:时间表
答案1
这是一个示例。我编辑了创建环境timetable
,它设置了 TABstack,并允许您填写详细信息。我为常规事物添加了各种辅助宏,例如
\firststation
、\nextstation
和\laststation
为第一列的符号;\terminus{}
以及\waypoint{}
终点站和航点站的名称;\routedetails[<direction modifier>]{<mode>}{<number>}{<direction>}
用于路线数据;\onbus
、,\onmetro
并\ontrain
提供各种交通方式的图标;以及\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}