Как удалить определенные вертикальные линии в длинном списке - PullRequest
1 голос
/ 06 ноября 2019

Таблица ниже. У меня есть шесть месяцев, разделенные на недели. Я пытался иметь вертикальные линии только на 4-й, 8-й, 12-й, 16-й, 20-й и 24-й неделях, т.е. только каждый месяц, или сделать каждую 4-ую вертикальную линию более толстой, но безуспешно. Это возможно. Или мои поиски на stackoverflow не сработали для меня. Я буду признателен за любую помощь.

\documentclass[11pt,twoside,fleqn]{report}
\usepackage{array,booktabs,tabularx} % also loads 'array' package
\newcolumntype{C}{>{\centering\arraybackslash}X} % centered version of 'X' columns

\usepackage{ltablex} 
\usepackage{longtable}
\usepackage[svgnames,table]{xcolor} % Required to specify font color
\setlength{\arrayrulewidth}{0.5mm}
\setlength{\tabcolsep}{3pt}
\renewcommand{\arraystretch}{1.2}

\begin{document}
\begin{longtable}[H]{|p{3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} |p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm}|p{0.3cm}|p{0.3cm}|p{0.3cm} | p{0.3cm} | p{0.3cm}|}
\hline
\setlength{\tabcolsep}{2pt} % for the horizontal padding
\renewcommand{\arraystretch}{2}% for the vertical padding
\textbf{first entires} &\cellcolor{orange} &\cellcolor{orange} &\cellcolor{orange} &\cellcolor{orange} & & & & & & & & & & & & & & & & & & & &
\\[0.10cm]
\hline
\textbf{second entries} & & & & & & & & & \cellcolor{blue}&\cellcolor{blue} &\cellcolor{blue} &\cellcolor{blue} & & & & & & & & & & & & 
\\[0.10cm]
\hline
\textbf{third entries} & & & & & & & & && & & & \cellcolor{orange}& \cellcolor{orange} & \cellcolor{orange} & \cellcolor{orange} & & & & & & & & 
\\[0.10cm]
\hline
\textbf{End} & & & & & & & & & & & & & & & & & & & & & & &\cellcolor{teal} &\cellcolor{teal} 
\\[0.10cm]
\hline
\bottomrule
\end{longtable}
\end{document}

1 Ответ

2 голосов
/ 07 ноября 2019

Чтобы избежать вертикальной черты, вам просто нужно опустить '|'спецификатор из этого столбца. Исходя из вашего исходного примера, это можно сделать с помощью

\begin{longtable}[H]{|p{3cm} | 
%p{0.3cm} | p{0.3cm} | p{0.3cm} | p{0.3cm} | 
p{0.3cm}  p{0.3cm}  p{0.3cm}  p{0.3cm} | 
p{0.3cm}  p{0.3cm}  p{0.3cm}  p{0.3cm} | 
p{0.3cm}  p{0.3cm}  p{0.3cm}  p{0.3cm} | 
p{0.3cm}  p{0.3cm}  p{0.3cm}  p{0.3cm} | 
p{0.3cm}  p{0.3cm}  p{0.3cm}  p{0.3cm} | }

Но такой метод подвержен ошибкам для таблицы из 25 столбцов, и вы должны предпочесть модификаторы *. *{num}{cells format} будет повторяться num раз для данного списка форматов, и эти команды могут быть вложенными.

Так что для вашей проблемы у вас есть 6 месяцев 4 недели, и это может быть задано как

\begin{longtable}[H]{ |p{3cm} | *6{*4{p{0.3cm}}|} }

только с вертикальной чертой в конце месяца.

Чтобы иметь различную ширину вертикальной черты, можно использовать '!'спецификатор разделителя. В табличной форме любая вертикальная черта может быть заменена на !{<separator command or char>}. Эта команда полностью заменяет | и не изменяет интервал между столбцами.

Необходимо использовать примитив TeX \vrule, а vrule width <w> нарисует вертикальное правило ширины <w> и высотызадается в рамке.

\documentclass[11pt,twoside,fleqn]{report}
\usepackage{array,tabularx} % also loads 'array' package
\usepackage{booktabs}
\newcolumntype{C}{>{\centering\arraybackslash}X} % centered version of 'X' columns

\usepackage{ltablex} 
\usepackage{longtable}
\usepackage[svgnames,table]{xcolor} % Required to specify font color

\setlength{\arrayrulewidth}{0.5mm}
\setlength{\tabcolsep}{3pt}
\renewcommand{\arraystretch}{1.2}

\begin{document}
{
  \setlength\arrayrulewidth{2pt}
  \newcommand{\thinvrule}{{\vrule width 0.5pt}}
  \renewcommand{\arraystretch}{2}% for the vertical padding
  \renewcommand{\defaultaddspace}{1cm}
  \setlength{\tabcolsep}{2pt} % for the horizontal padding
  \begin{longtable}[H]{|p{3cm} | *6{*3{p{0.3cm}!\thinvrule }p{0.3cm}|}}
    \hline
 \textbf{first entires} &\cellcolor{orange} &\cellcolor{orange} &\cellcolor{orange} &\cellcolor{orange} & & & & & & & & & & & & & & & & & & & &
\\[0.10cm]
\hline
\textbf{second entries} & & & & & & & & & \cellcolor{blue}&\cellcolor{blue} &\cellcolor{blue} &\cellcolor{blue} & & & & & & & & & & & & 
\\[0.10cm]
\hline
\textbf{third entries} & & & & & & & & && & & & \cellcolor{orange}& \cellcolor{orange} & \cellcolor{orange} & \cellcolor{orange} & & & & & & & & 
\\[0.10cm]
\hline
\textbf{End} & & & & & & & & & & & & & & & & & & & & & & &\cellcolor{teal} &\cellcolor{teal} 
\\[0.10cm]
\hline
\bottomrule
\end{longtable}
}
\end{document}

enter image description here

РЕДАКТИРОВАТЬ: Чтобы добавить столбец с названием месяца, вы можете использовать команду '\ multicolumn`,Чтобы распределить по числовым столбцам, его синтаксис:

\multicolumn{number}{format}{content}

Так что для вашей проблемы добавьте перед первым \ hline

    \hline
    &\multicolumn{4}{c|}{jan}&\multicolumn{4}{c|}{feb}&\multicolumn{4}{c|}{mar}&\multicolumn{4}{c|}{apr}&\multicolumn{4}{c|}{may}&\multicolumn{4}{c|}{jun}\\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...