我对以下内容有点困惑。由于我TeX
对排版以外的用途还不太熟悉,因此希望在这里得到一些帮助。
我已经在这个论坛上搜索了一些有用的帖子,并找到了很多,但我并没有解决我遇到的所有问题。
我想要做的是将 IP 地址列表及其对应内容自动排版FQDNs
到表格中。它应该看起来像:
Source: IP1:FQDN1;IP2:FQDN2;...
| IP1 FQDN1
Hosts | IP2 FQDN2
| ... ...
这是我尝试做的(将代码缩短为基本部分):
\documentclass{article}
\usepackage{xstring}
\usepackage{multirow}
\begin{document}
% test input
\newcommand{\myinput}{IP1:FQDN1;IP2:FQDN2}
\newcommand{\splitstring}[1]{
% split input into table rows
\ifx\@empty#1\else
\saveexpandmode\expandarg
% split column elements with leading & (after multirow)
\StrSubstitute{\tmp}{;}{\empty\\&}[\tmp] % fails with: forbidden control sequence found while scanning use of \@xs@next
% split row elements
\StrSubstitute{#1}{:}{&}[\tmp]
\restoreexpandmode\tmp
}
\begin{tabular}{l|ll}
% StrCount fails (Missing number, treated as zero)
\multirow{\StrCount{\myinput}{:}}{*}{Hosts} & \splitstring{\myinput}
\end{tabular}
\end{document}
编辑
一些额外的信息:改变线路
\StrSubstitute{\tmp}{;}{\empty\\&}[\tmp]
到
\StrSubstitute{\tmp}{;}{\empty\\}[\tmp]
(并删除&
)使此步骤构建时不会出现错误。输出如下所示:
| IP1 FQDN1
Hosts |
IP2 | FQDN2
如您所见,&
表格中需要正确对齐。我想知道为什么替换":"
by"&"
不会出错,但这个却失败了。
StrCount
关于将输出输入到多行环境中没有更多消息。
编辑
我不确定是否可以使用输出进行xstring-functions
排版或者是否可以将它们转换为参数使用。
任何帮助是极大的赞赏。
答案1
我始终相信,\multirow
通过移除它,可以改进每个带有它的表。以下是其中一种情况:
\documentclass{article}
\usepackage{xstring}
\begin{document}
% test input
\newcommand{\myinput}{IP1:FQDN1;IP2:FQDN2}
\newcommand{\splitstring}[1]{%
\saveexpandmode\expandarg
% split input into table rows
\StrSubstitute{#1}{;}{\noexpand\\}[\tmp]%
% split columns
\StrSubstitute{\tmp}{:}{&}[\tmp]%
\restoreexpandmode
\begin{tabular}{@{}ll@{}}\tmp\end{tabular}
}
\begin{tabular}{l|l}
Hosts & \splitstring{\myinput}
\end{tabular}
\bigskip
\renewcommand{\myinput}{}
\begin{tabular}{l|l}
Hosts & \splitstring{\myinput}
\end{tabular}
\end{document}
这个想法是建立一个包含地址的内部表。我还展示了它在空输入时也能工作。