问:如何创建一个包含连续编号列表的表格,每个项目都在一个新行中。这样我就可以在该行中插入其他列的内容。
我使用 luatex。
结果应如下所示(Word):
我尝试使用枚举并提出了这个不起作用的想法(查看评论)(缩短内容):
\documentclass[8pt,a4paper]{extarticle}
\usepackage{array}
\usepackage{enumitem}
\usepackage{tabularx}
\usepackage[left=1.2cm, right=1.2cm, top=0.0cm, bottom=0.0cm, headheight=37pt, includeheadfoot]{geometry}
\begin{document}
\begin{tabularx}{\textwidth}{p{8cm}|X|X|X|X|X|}
\textbf{Bezeichnung} & \textbf{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \textbf{Rabatt} & \textbf{€/Monat}\\
\hline%<----->
\begin{enumerate}[label=\Roman*,noitemsep]
\item System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz % &40,00€ & 1&Laufzeit &10\% &36,00€ \\ <--- Idea but doesn´t work...
\item IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen
\item Management: Auswahl-, Bestellung-, Überwachungs- und
\item Audit zur Evaluation und Qualitätssicherung %& 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\ <--- I need smth like this...
\end{enumerate} &40,00€ & 1&Laufzeit &10\% &36,00€ \\ %<---- Only this works
\hline%<----->
Summe & & & & &36,46€ \\
\end{tabularx}
\end{document}
答案1
建立在Bernard 的解决方案和magicrownumber
从这里:
\documentclass[8pt,a4paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{tabularx}
\usepackage[left=1.2cm, right=1.2cm, top=0.0cm, bottom=0.0cm, headheight=37pt, includeheadfoot]{geometry}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\usepackage{makecell}
\renewcommand{\theadfont}{\color{black}\bfseries}
\usepackage{array,etoolbox}
\preto\tabular{\setcounter{magicrownumbers}{0}}
\newcounter{magicrownumbers}
\newcommand\rownumber{\stepcounter{magicrownumbers}\Roman{magicrownumbers}.}
\begin{document}
\sffamily
\setlength{\extrarowheight}{2pt}
\noindent\begin{tabularx}{\textwidth}{@{\makebox[3em][r]{\rownumber\space}\compress}X|>{\color{red}}c|c|c|*{2}{>{\color{red}}c|}}
\multicolumn{1}{l|}{\textbf{Bezeichnung}} & \thead{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \thead{Rabatt} & \thead{€/Monat}\\
\hline
System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz &40,00€ & 1&Laufzeit &10\% &36,00€ \\
IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen & & & & & \\
Management: Auswahl-, Bestellung-, Überwachungs- und & & & & & \\
Audit zur Evaluation und Qualitätssicherung & 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\
\hline
\multicolumn{1}{l|}{Summe} & & & & &36,46€
\end{tabularx}
\vskip1cm
\end{document}
计数器magicrownumber
会在表格开始时自动重置,因此在新的表格环境中,计数器将重新开始I
。如果您希望在表格环境中重置计数器,可以使用\setcounter{magicrownumner}{0}
以下示例所示的方法:
\documentclass[8pt,a4paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{tabularx}
\usepackage[left=1.2cm, right=1.2cm, top=0.0cm, bottom=0.0cm, headheight=37pt, includeheadfoot]{geometry}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\usepackage{makecell}
\renewcommand{\theadfont}{\color{black}\bfseries}
\usepackage{array,etoolbox}
\preto\tabular{\setcounter{magicrownumbers}{0}}
\newcounter{magicrownumbers}
\newcommand\rownumber{\stepcounter{magicrownumbers}\Roman{magicrownumbers}.}
\begin{document}
\sffamily
\setlength{\extrarowheight}{2pt}
\noindent\begin{tabularx}{\textwidth}{@{\makebox[3em][r]{\rownumber\space}\compress}X|>{\color{red}}c|c|c|*{2}{>{\color{red}}c|}}
\multicolumn{1}{l|}{\textbf{Bezeichnung}} & \thead{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \thead{Rabatt} & \thead{€/Monat}\\
\hline
System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz &40,00€ & 1&Laufzeit &10\% &36,00€ \\
IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen & & & & & \\
Management: Auswahl-, Bestellung-, Überwachungs- und & & & & & \\
Audit zur Evaluation und Qualitätssicherung & 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\
\hline
\multicolumn{1}{l|}{Summe} & & & & &36,46€
\end{tabularx}
\bigskip
\noindent\begin{tabularx}{\textwidth}{@{\makebox[3em][r]{\rownumber\space}\compress}X|>{\color{red}}c|c|c|*{2}{>{\color{red}}c|}}
\multicolumn{1}{l|}{\textbf{Bezeichnung}} & \thead{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \thead{Rabatt} & \thead{€/Monat}\\
\hline
System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz &40,00€ & 1&Laufzeit &10\% &36,00€ \\
IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen & & & & & \\
Management: Auswahl-, Bestellung-, Überwachungs- und & & & & & \\
Audit zur Evaluation und Qualitätssicherung & 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\
\hline
\multicolumn{1}{l|}{Summe} & & & & &36,46€
\end{tabularx}
\bigskip
\noindent\begin{tabularx}{\textwidth}{@{\makebox[3em][r]{\rownumber\space}\compress}X|>{\color{red}}c|c|c|*{2}{>{\color{red}}c|}}
\multicolumn{1}{l|}{\textbf{Bezeichnung}} & \thead{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \thead{Rabatt} & \thead{€/Monat}\\
\hline
System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz &40,00€ & 1&Laufzeit &10\% &36,00€ \\
IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen & & & & & \\
Management: Auswahl-, Bestellung-, Überwachungs- und & & & & & \\
Audit zur Evaluation und Qualitätssicherung & 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \setcounter{magicrownumbers}{0}\\ %<-------- Reset counter
\hline
System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz &40,00€ & 1&Laufzeit &10\% &36,00€ \\
IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen & & & & & \\
Management: Auswahl-, Bestellung-, Überwachungs- und & & & & & \\
Audit zur Evaluation und Qualitätssicherung & 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\
\hline
\multicolumn{1}{l|}{Summe} & & & & &36,46€
z\end{tabularx}
\end{document}
答案2
与@Bernard 的回答类似,但有些细节不同:
- 对于第一列,定义了
E
枚举内容的列类型:
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\newcolumntype{E}[1]{ >{\compress\enumerate}p{#1}<{\endenumerate}}
简化了第一列的书写列表
- 对于枚举列表定义以下设置:
\setlist[enumerate]{%
resume=column,
nosep,
label=\Roman*.,
leftmargin=*,
after=\vspace*{-\dimexpr\baselineskip + \partopsep}}
用于恢复列表枚举的选项
resume=column
,在enumerate
列表设置中用于开始枚举的
I.
是专用于列中\setcounter{enumi}{0}
第一列之前的内容(请参阅下面的 MWE)\item
我没有费心为数字着色(我不清楚,是否在某一列中所有的数字都是红色的,或者它们是否根据其他标准进行选择)
用于编译
xelatex
(由于使用 € 字符作为货币)完整的 MWE 是:
\documentclass[8pt,a4paper]{extarticle}
\usepackage[hmargin=1.2cm, vmargin=0.0cm,
headheight=37pt, includeheadfoot]{geometry}
\usepackage{enumitem}
\usepackage{ragged2e}
\usepackage{tabularx}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\newcolumntype{E}[1]{ >{\compress\enumerate}p{#1}<{\endenumerate}}
\newcommand*\mcbf[1]{\multicolumn{1}{>{\bfseries}l|}{#1}}
\begin{document}
\setlist[enumerate]{ label=\Roman*.,
nosep,
leftmargin=*,
after=\vspace*{-\dimexpr\baselineskip + \partopsep}}
\begin{tabularx}{\linewidth}{ >{\RaggedRight}E{5cm}*{5}{|X}|}
\mcbf{Bezeichnung}
& \mcbf{Einzelpreis} & \mcbf{Anzahl} & \mcbf{Intervall}
& \mcbf{Rabatt} & \mcbf{€/Monat}\\
\hline%<----->
\setcounter{enumi}{0}
\item System: Software as a Service Geltungsbereich Arbeits- und Gesundheitsschutz
& 40,00€ & 1 & Laufzeit & 10\% & 36,00€ \\
\item IT-Service-Pack Release, Update, Support:
Übernahme der kompletten IT-Administration und weitere Dienstleistungen
\item Management: Auswahl-, Bestellung-, Überwachungs- und
\item Audit zur Evaluation und Qualitätssicherung
& 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\
\hline%<----->
\mcbf{Summe}
& & & & & 36,46€ \\
\end{tabularx}
\end{document}
附录: 通过与@Bernard 的对话(在下面的评论中)发起,看看我的原始答案的以下变体是否更适合您:
- 表格中枚举样式的定义已移至序言部分,现在可用于表格中的所有列表
- 第一列使用
X
列类型 - 对于带有数字的列,使用包
S
中定义的列siunitx
- 您的桌子被封装在
table
浮动环境中。 - 为第二、第五和第六(最后一)列添加了红色
\documentclass[8pt,a4paper]{extarticle}
\usepackage[hmargin=1.2cm, vmargin=0.0cm,
headheight=37pt, includeheadfoot]{geometry}
\usepackage{enumitem}
\usepackage{etoolbox} % new
\AtBeginEnvironment{table}{% for enumerate list in "table" environments
\setlist[enumerate]{% % moved in preamble
resume=column,
nosep,
label=\Roman*.,
leftmargin=*,
after=\vspace*{-\dimexpr\baselineskip + \partopsep}}
}
\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage{xcolor}
\usepackage{siunitx}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\newcolumntype{E}{ >{\compress\enumerate}X<{\endenumerate}}
\newcommand*\mcbf[1]{\multicolumn{1}{>{\bfseries}l|}{#1}}
\begin{document}
\begin{table}
\begin{tabularx}{\linewidth}{@{}
>{\RaggedRight}E
|S[table-format=2.2,color=red]<{\,\textcolor{red}{€}}
|S[table-format=1.0]
|l
|S[table-format=2.0,color=red]<{\,\textcolor{red}{\%}}
|S[table-format=2.2,color=red]<{\,\textcolor{red}{€}}|
}
\mcbf{Bezeichnung}
& \mcbf{Einzelpreis} & \mcbf{Anzahl} & \mcbf{Intervall}
& \mcbf{Rabatt} & \mcbf{€/Monat}\\
\hline
\setcounter{enumi}{0} % <--- reset counter enumi
\item System: Software as a Service Geltungsbereich Arbeits- und Gesundheitsschutz
& 40,00 & 1 & Laufzeit & 10 & 36,00 \cr % <---
\setcounter{enumi}{1}
\item IT-Service-Pack Release, Update, Support:
Übernahme der kompletten IT-Administration und weitere Dienstleistungen
\item Management: Auswahl-, Bestellung-, Überwachungs- und
\item Audit zur Evaluation und Qualitätssicherung
& 7,39 & 1 & Laufzeit & 10 & 6,46 \cr % <---
\hline%<----->
\mcbf{Sume}
& \mcbf{} & & & \mcbf{} & 36,46 \cr % <---\
\end{tabularx}
\end{table}
\end{document}
答案3
我建议使用以下两种解决方案之一:
\documentclass[8pt,a4paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{enumitem}
\usepackage{tabularx}
\usepackage[left=1.2cm, right=1.2cm, top=0.0cm, bottom=0.0cm, headheight=37pt, includeheadfoot]{geometry}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\usepackage{makecell}
\renewcommand{\theadfont}{\color{black}\bfseries}
\usepackage{listliketab}
\begin{document}
\sffamily
\setlength{\extrarowheight}{2pt}
\noindent\begin{tabularx}{\textwidth}{>{\compress}X|>{\color{red}}c|c|c|*{2}{>{\color{red}}c|}}
\textbf{Bezeichnung} & \thead{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \thead{Rabatt} & \thead{€/Monat}\\
\hline%<----->
\begin{enumerate}[label=\Roman*. ,widest =VI, noitemsep, wide=0pt, leftmargin=*, after =\vspace*{-\dimexpr\topsep + \partopsep}]
\item System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz % &40,00€ & 1&Laufzeit &10\% &36,00€ \\ <--- Idea but doesn´t work...
\item IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen
\item Management: Auswahl-, Bestellung-, Überwachungs- und
\item Audit zur Evaluation und Qualitätssicherung %& 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\ <--- I need smth like this...
\end{enumerate} &40,00€ & 1&Laufzeit &10\% &36,00€ \\ %<---- Only this works
\hline%<----->
Summe & & & & &36,46€
\end{tabularx}
\vskip1cm
\storestyleof{enumerate}
\begin{listliketab}
\newcounter{tabenum}\setcounter{tabenum}{0}
\newcommand{\nextnum}{\addtocounter{tabenum}{1}\Roman{tabenum}.}
\noindent\begin{tabularx}{\textwidth}{LX|>{\color{red}}c|c|c|*{2}{>{\color{red}}c|}}
\multicolumn{2}{l|}{\textbf{Bezeichnung}} & \thead{Einzelpreis} & \textbf{Anzahl}
& \textbf{Intervall} & \thead{Rabatt} & \thead{€/Monat}\\
\hline\noalign{\vskip-1.8ex}%<----->
\nextnum & System: Software as a Service Geltungsbereich Arbeits- und
Gesundheitsschutz &40,00€ & 1&Laufzeit &10\% &36,00€ \\[-3ex]
\nextnum & IT-Service-Pack Release, Update, Support:\newline
Übernahme der kompletten IT-Administration und weitere Dienstleistungen & & & & & \\[-3ex]
\nextnum &Management: Auswahl-, Bestellung-, Überwachungs- und & & & & & \\[-3ex]
\nextnum & Audit zur Evaluation und Qualitätssicherung & 7,39€ & 1 & Laufzeit & 10\% & 6,46€ \\
\hline
\multicolumn{2}{l|}{Summe} & & & & &36,46€
\end{tabularx}
\end{listliketab}
\end{document}