我只是想问一下是否可以在一个单元格中插入标签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}
但我需要与文本框中的间距相同。 有没有什么办法? 因为我真的不想为它创建尽可能多的列,然后将那些未使用的列多列化。 也许类似于 中的 \> 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}