Иногда нужно визуально выделить содержимое конкретной ячейки, например, создать эффект «вложенности» или красной строки для всего блока текста. Речь идет о ячейке типа «параграф» p{...}, которая поддерживает перенос строк.
Простое добавление \hspace в начале строки недостаточно, при переносе вторая и последующие строки будут прибиты к левому краю. Цель: сделать так, чтобы все строки были немного сдвинуты.
Для этого воспользуемся комбинацией \hspace* и \parbox:
\newcommand{\colwidth}{\dimexpr\linewidth-2\tabcolsep-\arrayrulewidth}
\newcommand{\cellspace}[1]{\hspace*{0.4cm}\parbox[t]{\colwidth}{#1}}
\begin{tabular}{|p{5cm}|c|c|} \hline
\textbf{Название списка} & \textbf{Ячейка 1} & \textbf{Ячейка 2} \\ \hline
\cellspace{Содержимое первого элемента списка на несколько строк}\par & Ячейка 3 & Ячейка 4 \\ \hline
\cellspace{Содержимое второго элемента списка на несколько строк} & Ячейка 5 & Ячейка 6 \\ \hline
\cellspace{Третий элемент} & Ячейка 7 & Ячейка 8 \\ \hline
\end{tabular}
В результате получим следующую таблицу:

Для упрощения записи повторяющиеся команды переопределили как отдельные новые команды. Команда \cellspace — новая команда, которая задает комбинацию сдвига. Команда \colwidth использует расчетную ширину столбца, ее в данном примере можно просто заменить на 4.6cm (5 см минус сдвиг 0.4 см). Определение \colwidth через расчетное значение удобно использовать для ячеек разной ширины, не задумываясь над расчетами ширины.
Команду \hspace*{} используем именно со звездочкой, это гарантирует, что отступ не будет удален в начале ячейки, так как иногда Latex игнорирует такие пробелы.
Есть нюанс с использованием \par в конце ячейки. Если текст многострочный, добавление \par добавляет стандартный отступ снизу (первая строка). Без него текст может выглядеть прижатым к нижней линии (вторая строка). Если текст выводится в одну строку, \par использовать не нужно, иначе появится лишняя строка.
longtable добавляет небольшие вертикальные отступы до и после таблицы:\LTpre по умолчанию равен \bigskipamount.\LTpost также равен \bigskipamount.\bigskipamount обычно составляет 12pt ± 4pt, то есть базовое значение 12pt с возможностью растяжения или сжатия в пределах 4pt.longtable достаточно задать параметры \LTpre и \LTpost:\setlength{\LTpre}{0pt} % Убрать полностью отступ перед longtable
\setlength{\LTpost}{5pt} % Отступ после longtable будет равен 5ptРассмотрим пример стандартной таблицы с выравниванием текста по ширине (например, p{5cm}) в Latex:
\begin{tabular}{|c|p{3.5cm}|p{3.5cm}|}\hline
1 & Первое длинное предложение & Второе длинное предложение\\ \hline
2 & Первое длинное предложение во второй строке & Второе длинное предложение во второй строке таблицы\\ \hline
3 & Первое длинное предложение в третьей строке таблицы & Второе длинное предложение в третьей строке\\ \hline
\end{tabular}Результат в PDF после компиляции:

Получились длинные растянутые пробелы почти во всех ячейках таблицы. От них можно избавиться, сделав выравнивание текста по левому краю с помощью команды >{\raggedright\arraybackslash} следующим образом:
\usepackage{array} % добавить пакет для работы команды arraybackslash
...
\begin{tabular}{|c|>{\raggedright\arraybackslash}p{3.5cm}|>{\raggedright\arraybackslash}p{3.5cm}|}\hline
1 & Первое длинное предложение & Второе длинное предложение\\ \hline
2 & Первое длинное предложение во второй строке & Второе длинное предложение во второй строке таблицы\\ \hline
3 & Первое длинное предложение в третьей строке таблицы & Второе длинное предложение в третьей строке\\ \hline
\end{tabular}
Получим более красивый вариант таблицы без дополнительных пробелов между словами:

Хотелось бы еще убрать пробелы справа после слов. Это можно сделать, используя пакет ragged2e и команду >{\RaggedRight\hspace{0pt}}:
\usepackage{array} % для работы команды arraybackslash
\usepackage{ragged2e} % выравнивание по левому краю с переносами
...
\begin{tabular}{|c|>{\RaggedRight\hspace{0pt}}p{3.5cm}|>{\RaggedRight\hspace{0pt}}p{3.5cm}|}\hline
1 & Первое длинное предложение & Второе длинное предложение\\ \hline
2 & Первое длинное предложение во второй строке & Второе длинное предложение во второй строке таблицы\\ \hline
3 & Первое длинное предложение в третьей строке таблицы & Второе длинное предложение в третьей строке\\ \hline
\end{tabular}
В результате получим переносы в словах во всех ячейках, включая верхнюю строку:

Задача заключается в создании бланка для налоговой службы. Некоторые данные должны быть внесены в таблицу с серыми пунктирными границами. Как это сделать в LaTeX?
Создадим простую таблицу tabular, добавим немного воздуха вокруг данных и зададим цвет линий:
\usepackage{xcolor}
\usepackage{colortbl}
...
\renewcommand{\arraystretch}{1.8} % увеличиваем вертикальные отступы
\arrayrulecolor{lightgray} % устанавливаем цвет границы таблицы
\setlength{\arrayrulewidth}{0.5pt} % устанавливаем толщину линий
\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|} \cline{2-12}
ИНН & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 0 & 1 \\ \cline{2-12}
\end{tabular}
Теперь, используя пакет arydshln, зададим пунктирные линии. Для этого в качестве разделителя столбцов используем двоеточие : , в качестве полных линий \hdashline и укороченных линий \cdashline.
\usepackage{xcolor}
\usepackage{arydshln}
...
\begin{tabular}{c:c:c:c:c:c:c:c:c:c:c:c:} \cdashline{2-12}
КПП & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 0 & 1 \\ \cdashline{2-12}
\end{tabular}
Можно остановиться и на этом, но если необходимо настроить вид пунктирных линий, то можно их можно изменить, меняя \dashlinedash — для длины видимой части линии и \dashlinegap — для отступов между пунктирами.
\usepackage{xcolor}
\setlength{\dashlinedash}{10pt}
\setlength{\dashlinegap}{2pt}
\begin{tabular}{|l:l:l|} \hline
Ячейка 1 & Ячейка 2 & Ячейка 3 \\ \hdashline
Ячейка 4 & Ячейка 5 & Ячейка 6 \\ \hdashline
Ячейка 7 & Ячейка 8 & Ячейка 9 \\ \hline
\end{tabular}
А для настройки отдельных линий можно воспользоваться следующими возможностями пакета arydshln. Для вертикальных линий вместо двоеточия использовать точку с запятой и настройку пунктирной линии ;{dash/gap}. Для горизонтальных линий после команды линии дописать настройку в []: \dashlinedash[dash/gap].
Рассмотрим это на примере:
\usepackage{xcolor}
\renewcommand{\arraystretch}{2.5}
\arrayrulecolor{gray}
\begin{tabular}{|l::c;{2pt/2pt}r|} \hline
Ячейка 1 & Ячейка 2 & Ячейка 3 \\ \hdashline[5pt/2pt]
Ячейка 4 & Ячейка 5 & Ячейка 6 \\ \cdashline{1-2}[1pt/4pt]
\multicolumn{2}{|c;{2pt/2pt};{2pt/2pt}}{Ячейка 7} & Ячейка 8\\ \hdashline \hdashline
\end{tabular}
Ниже вы можете увидеть изображения, иллюстрирующие каждый пример:
