![Многострочная таблица: убрать отступ первой строки](https://rvso.com/image/254731/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%B0%D1%8F%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0%3A%20%D1%83%D0%B1%D1%80%D0%B0%D1%82%D1%8C%20%D0%BE%D1%82%D1%81%D1%82%D1%83%D0%BF%20%D0%BF%D0%B5%D1%80%D0%B2%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8.png)
В среде pdfLaTeX tabular
первая строка каждой \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
(Как упоминал Адитья). Следующее определение устраняет это (и не требует \setlength{\parindent}{0pt}
:
% table header
\newcommand{\ith}{%
\cellcolor[gray]{.8}%
}
Обратите внимание на добавление %
в конце строк. Конечно, то же самое касается и других команд, определенных в вашем примере ( \itg
, \strutD
, \vatexempt
, ...).
О мотивах этого см.Для чего нужны знаки процентов в конце строк?