在 tabularx 环境中创建选项卡

在 tabularx 环境中创建选项卡

我只是想问一下是否可以在一个单元格中插入标签tabularx。为了更好地说明这个问题,我将附上图片。

文本框文本

这是我程序中文本框的内容。因此我可以确定 Tab 键、换行符和空格的位置。我需要单元格中的格式相同tabularx。在 LaTeX 代码中我有以下内容:

\begin{tabularx}{\columnwidth}{lX}
\multicolumn{2}{l}{\textbf{Identification:}} \\
\textbf{End A:} & Something \newline Wire 1: asd Color: black Type: copper \newline Wire 2: asd Color: red Type: aluminium \\
\textbf{End B:} &  \\
\end{tabularx}

Latex 输出

但我需要与文本框中的间距相同。 有没有什么办法? 因为我真的不想为它创建尽可能多的列,然后将那些未使用的列多列化。 也许类似于 中的 \> tabbing

答案1

如果您想要表格式的对齐方式,请插入适合您需要的列:

表格

\documentclass{article}
\begin{document}
\noindent
\begin{tabular}{lll@{\quad}ll@{\quad}ll}
  \multicolumn{7}{l}{\textbf{Identification:}} \\
  \textbf{End A:} & Something \\
    & Wire 1: asd & Color: black & Type: copper \\
    & Wire 2: asd & Color: red   & Type: aluminium \\
  \textbf{End B:} & Something else \\
    & Wire 1: qwe    & Color: green  & Type: silver \\
    & Wire 2: qwerty & Color: yellow & Type: gold
\end{tabular}
\end{document}

如果需要,这个过程可以自动化。例如,如果你总是Wire X:在第一列、Color:第二列和Type:第三列有。它也可以变成一个宏,按顺序排列它们,避免你重复使用对齐运算符&


或者,使用tabbing具有多个预定义选项卡的环境。您可能不会使用所有这些选项卡,但这不是问题:

在此处输入图片描述

\documentclass{article}
\newenvironment{tabenv}[1][7em]
  {\begin{tabbing}
   \hspace*{#1}\=\hspace{#1}\=\hspace*{#1}\=\hspace*{#1}\=\hspace*{#1}\=\hspace*{#1}\=\kill}
  {\end{tabbing}}
\begin{document}
\noindent
\begin{tabenv}
  \textbf{Identification:} \\
  \textbf{End A:} \> Something \\
    \> Wire 1: asd \> Color: black \> Type: copper \\
    \> Wire 2: asd \> Color: red   \> Type: aluminium \\
  \textbf{End B:} \> Something else \\
    \> Wire 1: qwe    \> Color: green  \> Type: silver \\
    \> Wire 2: qwerty \> Color: yellow \> Type: gold
\end{tabenv}

\noindent
\begin{tabenv}[8em]
  \textbf{Identification:} \\
  \textbf{End A:} \> Something \\
    \> Wire 1: asd \> Color: black \> Type: copper \\
    \> Wire 2: asd \> Color: red   \> Type: aluminium \\
  \textbf{End B:} \> Something else \\
    \> Wire 1: qwe    \> Color: green  \> Type: silver \\
    \> Wire 2: qwerty \> Color: yellow \> Type: gold
\end{tabenv}
\end{document}

提供给环境的可选参数tabenv定义制表符的空格(默认为7em)。


另一种方法是将项目列表视为常规列表,将每个项目放在预先指定宽度的框中,这样它们就可以换行到后续行。列表处理使用etoolbox(其他列表处理包可以做同样的事情),而表格排列则使用tabularx以填充整个\linewidth

在此处输入图片描述

\documentclass{article}
\usepackage{etoolbox,tabularx}% http://ctan.org/pkg/{etoolbox,tabularx}
\newlength{\textboxlen}
\newenvironment{tabenv}[1][7em]
  {\setlength{\textboxlen}{#1}%
   \tabularx{\linewidth}{l>{\raggedright\arraybackslash}X}}
  {\endtabularx}
\newcommand{\items}[1]{%
  \renewcommand*{\do}[1]{% Each item will be put in a...
    \makebox[\textboxlen][l]{##1}\hspace{0pt}}% ... box
  \docsvlist{#1}% Process list
}
\begin{document}
\noindent
\begin{tabenv}
  \multicolumn{2}{l}{\textbf{Identification:}} \\
  \textbf{End A:} & Something \\
    & \items{Wire 1: asd, Color: black, Type: copper} \\
    & \items{Wire 2: asd, Color: red, Type: aluminium} \\
  \textbf{End B:} & Something else \\
    & \items{Wire 1: qwe, Color: green, Type: silver} \\
    & \items{Wire 2: qwerty, Color: yellow, Type: gold}
\end{tabenv}

\noindent
\begin{tabenv}[8em]
  \multicolumn{2}{l}{\textbf{Identification:}} \\
  \textbf{End A:} & Something \\
    & \items{Wire 1: asd, Color: black, Type: copper} \\
    & \items{Wire 2: asd, Color: red, Type: aluminium} \\
  \textbf{End B:} & Something else \\
    & \items{Wire 1: qwe, Color: green, Type: silver} \\
    & \items{Wire 2: qwerty, Color: yellow, Type: gold, Stuff: apples, Things: baking, Money: Twelve}
\end{tabenv}
\end{document}

相关内容