在 pdfLaTeXtabular
环境中,每个单元格的第一行\multirow
都会缩进。无论我使用l
、r
还是p
作为列说明符。如何摆脱它?!?
以下是屏幕截图:
这是我的代码:
\NeedsTeXFormat{LaTeX2e}
\documentclass[a4paper,10pt]{article}
\pagestyle{empty}
\usepackage{array}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{pbox}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[OT4]{fontenc}
\usepackage[lmargin=2cm,rmargin=2cm,tmargin=1.5cm,bmargin=1.5cm]{geometry}
\usepackage{graphicx}
\usepackage{sectsty}
\allsectionsfont{\underline}
\usepackage[pdftex]{hyperref}
\hypersetup{pdfborder={0 0 0 0},colorlinks=true,urlcolor=blue}
\fontencoding{T1}
\fontfamily{qpl}
\fontseries{m}
\fontshape{n}
\newlength{\rowA}
\setlength{\rowA}{3.5ex}
\newcommand{\strutA}{
\rule[-0.2\rowA]{0pt}{\rowA}
}
\newlength{\rowB}
\setlength{\rowB}{6.5ex}
\newcommand{\strutB}{
\rule[-0.55\rowB]{0pt}{\rowB}
}
\newlength{\rowD}
\setlength{\rowD}{6ex}
\newcommand{\strutD}{
\rule[-0.6\rowD]{0pt}{\rowD}
}
\newcommand{\vatexempt} {
\pbox[t]{2cm}{Nie podlega\\Exempt}
}
% table cell with dark background
\newcommand{\itg} {
\cellcolor[gray]{.8}
\setlength{\parindent}{0pt}
}
% table header
\newcommand{\ith} {
\cellcolor[gray]{.8}
\setlength{\parindent}{0pt}
}
\setlength{\parindent}{0pt}
\setlength{\parskip}{7.2pt}
\begin{document}
\begin{fussy}
\begin{tabular}{|r|p{4cm}|r|r|r|r|r|r|}
\hline
\ith\strutA No.&\ith&\multicolumn{1}{p{0.6cm}|}{\multirow{2}{0.6cm}{\ith Q-tity}}&\ith&\ith&\multicolumn{2}{c|}{\ith VAT}&\ith\\
\cline{6-7}
\ith\strutD&\multicolumn{1}{p{4cm}|}{\multirow{-2}{4cm}{\ith Service or commodity name}}&\ith&\multicolumn{1}{p{2cm}|}{\multirow{-2}{2cm}{\ith Net unit price (EUR)}}&\multicolumn{1}{p{2cm}|}{\multirow{-2}{2cm}{\ith Net value (EUR)}}&\multicolumn{1}{p{2cm}|}{\ith Rate (\%)}&\multicolumn{1}{p{1.2cm}|}{\ith Amount (EUR)}&\multicolumn{1}{p{2cm}|}{\multirow{-2}{2cm}{\ith Gross value (EUR)}}\\
\hline
\strutD 1 & screwdrivers 10 pack & 1 & 123 & 123 & \vatexempt & 0 & 123\\
\hline
\multicolumn{2}{l|}{} & \multicolumn{2}{l}{\itg\strutA SUMA / TOTAL:} & \itg 123 &\itg&\itg 0 &\itg 123\\
\cline{3-8}
\end{tabular}
\end{fussy}
\end{document}
我正在使用这些\multicolumn{1}
调整使表格主体单元格内容右对齐(这些是数量)并且标题单元格内容对齐但没有缩进!
事实上,我也对标题单元格内容向左对齐(但带有连字符)感到满意。这样甚至可能更好。(如何实现?)
我使用\multirow{-2}
将内容绘制在背景上,而不是在下面。:o)
答案1
为了进行比较,以下是在 ConTeXt 中排版同一张表格的方法。请注意,所有设置命令都可以移到表格之外,并且可以清晰地排版表格内容。
\setupbodyfont[10pt]
\startsetups invoice
\setupTABLE[column][each][align={flushright}]
\setupTABLE[header][background=color,backgroundcolor=gray, align={middle,lohi}]
\setupTABLE[column][2][width=4cm, align=normal]
\setupTABLE[column][4,5,6,7,8][width=2cm]
\setupTABLE[row][last][background=color,backgroundcolor=gray]
\setupTABLE[1,2][last][frame=off,background=]
\setupTABLE[3,5,6,7][last][frame=off, topframe=on, bottomframe=on]
\setupTABLE[3,6][last][leftframe=on]
\stopsetups
\starttext
\bTABLE[setups={invoice}]
\bTABLEhead
\bTR
\bTD[ny=2] No. \eTD
\bTD[ny=2] Service or commodity name \eTD
\bTD[ny=2] Q-tity \eTD
\bTD[ny=2] Net Unit Price (EUR) \eTD
\bTD[ny=2] Net value (EUR) \eTD
\bTD[nx=2] Value \eTD
\bTD[ny=2] Gross value (EUR) \eTD
\eTR
\bTR
\bTD Rate (\%) \eTD
\bTD Amount (EUR) \eTD
\eTR
\eTABLEhead
\bTABLEbody
\bTR
\bTD 1 \eTD
\bTD screwdrivers 10 pack \eTD
\bTD 1 \eTD
\bTD 123 \eTD
\bTD 123 \eTD
\bTD[align=normal]
Nie podlega Exempt \eTD
\bTD 0 \eTD
\bTD 123 \eTD
\eTR
\eTABLEbody
\bTABLEfoot
\bTR
\bTD[nx=2] \eTD
\bTD[nx=2] SUMA/TABLE \eTD
\bTD 123 \eTD
\bTD \eTD
\bTD 0 \eTD
\bTD 123 \eTD
\eTR
\eTABLEfoot
\eTABLE
\stoptext
这使
我没有尝试调整不同列的宽度,所以它们与您在 LaTeX 中获得的不同。
答案2
“缩进”源于您\newcommand
对 的定义中的虚假空格\ith
(正如 Aditya 所提到的)。以下定义删除了此空格(并且不需要\setlength{\parindent}{0pt}
:
% table header
\newcommand{\ith}{%
\cellcolor[gray]{.8}%
}
%
请注意在行尾添加了。当然,示例中定义的其他命令也是如此( \itg
、\strutD
、\vatexempt
、 ...)。
有关其背后的动机,请参阅行末的百分号有什么用?