
У меня возникла небольшая проблема с набором текста внутри longtable
среды.
Я пишу свое резюме и мне нужно написать список навыков внутри ячейки таблицы. Поскольку я хотел бы ограничить длину документа одной страницей, я не использую itemize
для экономии места, поэтому я написал список вручную, используя дефисы ("-").
Я заметил, что если дефис является первым символом в ячейке таблицы, то первая строка отступает на один пробел, тогда как если перед списком есть какой-то текст, то все отображается правильно.
Я заметил, что комментирование \usepackage{microtype}
решает проблему, но я бы хотел использовать пакет, потому что в противном случае интервалы выглядят не так хорошо.
Вот пример того, что у меня есть:
\documentclass[a4paper,12pt,]{report}
\usepackage[swedish, italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{pslatex}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[round]{natbib}
\usepackage{microtype}
\usepackage{longtable}
\usepackage[top=2cm, bottom=2cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{array}
\renewcommand{\baselinestretch}{1.05}
\renewcommand*{\familydefault}{\sfdefault}
%----------------------------------------
\begin{document}
\pagenumbering{gobble}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{3.5cm}}
\begin{longtable}{Rp{11cm}}
\textbf{Education}&\\
2010 - 2014 &\textbf{University and degree}
- One course
- Another course
- Some interesting seminar\\
\textbf{Computer skills}&\\
&- Operating systems: Windows, Linux
- Other software
- Other software
\end{longtable}
\end{document}
Как вы можете видеть на рисунке, если перед дефисом есть текст («Университет и степень»), список отображается правильно, но строка, начинающаяся с «Операционные системы», имеет отступ.
Итак, как избавиться от пробела перед дефисом, не прибегая к комментированию microtype
?
Редактировать: Я обнаружил, что могу исправить проблему вручную, добавив \hspace{-2pt}
перед отступом строки, но я все еще хотел бы найти правильный способ сделать это. Спасибо до сих пор!
решение1
Использование \\
(двойной обратной косой черты) в конце каждой строки и вставка &
(разделителей столбцов) устраняет проблему, с которой вы столкнулись. Кстати, как заметил @egreg в комментарии, вам не следует использовать -
; по крайней мере, рассмотрите возможность использования коротких тире (создаваемых путем ввода --
).
\documentclass[a4paper,12pt]{report}
\usepackage[swedish, italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{pslatex}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[round]{natbib}
\usepackage{microtype}
\usepackage{longtable}
\usepackage[vmargin=2cm,hmargin=2.5cm]{geometry}
\usepackage{array}
\renewcommand{\baselinestretch}{1.05}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\pagenumbering{gobble}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{3.5cm}}
\begin{longtable}{Rp{11cm}}
\textbf{Education}&\\
2010--2014 &\textbf{University and degree} \\
&-- One course\\
&-- Another course\\
&-- Some interesting seminar\\[1ex]
\textbf{Computer skills}\\
&-- Operating systems: Windows, Linux\\
&-- Other software\\
&-- Other software\\
\end{longtable}
\end{document}
Приложение: Я считаю, что результат, полученный выше с longtable
окружением, может быть также получен с tabular
окружением. В примере ниже я сначала набираю материал как longtable
(который по умолчанию центрирован), а затем, после отступления и переключения на красный цвет, с помощью tabular
.
\documentclass[a4paper,12pt]{report}
\usepackage[swedish, italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{xcolor} % load this package so that "tabular" env. can be typeset in red
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[round]{natbib}
\usepackage{microtype}
\usepackage{longtable}
\usepackage[vmargin=2cm,hmargin=2.5cm]{geometry}
\usepackage{array}
\renewcommand{\baselinestretch}{1.05}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\pagenumbering{gobble}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{3.5cm}}
\begin{longtable}{Rp{11cm}}
\textbf{Education}&\\
2010--2014 &\textbf{University and degree} \\
&-- One course\\
&-- Another course\\
&-- Some interesting seminar\\[1ex]
\textbf{Computer skills}\\
&-- Operating systems: Windows, Linux\\
&-- Other software\\
&-- Other software\\
\end{longtable}
\centering
\vspace{-5.46cm} % vertical adjustment, to overlayed the tabular on the longtable
\color{red}
\begin{tabular}{Rp{11cm}}
\textbf{Education}&\\
2010--2014 &\textbf{University and degree} \\
&-- One course\\
&-- Another course\\
&-- Some interesting seminar\\[1ex]
\textbf{Computer skills}\\
&-- Operating systems: Windows, Linux\\
&-- Other software\\
&-- Other software\\
\end{tabular}
\end{document}
решение2
Проблема в том, что microtype
дефисы и тире выступают на полях. Давайте рассмотрим пару примеров:
\documentclass{article}
\usepackage{microtype,longtable}
\begin{document}
\setlength{\tabcolsep}{0pt} % no intercolumn space to show the problem
\begin{longtable}{l|p{3cm}}
xxx &- abc
- abc\\
\end{longtable}
\centering % longtable centers!
\begin{tabular}{l|p{3cm}}
xxx &- abc
- abc\\
\end{tabular}
\end{document}
Таким образом, в строке «Операционные системы» нет дополнительного пространства, но нет выступа ( longtable
делает некоторые трюки со p
столбцами). Следующие дефисы находятся немного левее.
Решение:
\newcommand{\itemdash}{\mbox{\kern0pt--}}
Я использовал короткое тире вместо дефиса, что стилистически лучше.
Вот полный пример
\documentclass{article}
\usepackage{microtype,longtable}
\newcommand{\itemdash}{\mbox{\hspace{0pt}--}}
\begin{document}
\setlength{\tabcolsep}{0pt} % no intercolumn space to show the problem
\begin{longtable}{l|p{3cm}}
xxx &\itemdash\ abc
\itemdash\ abc\\
\end{longtable}
\centering % longtable centers!
\begin{tabular}{l|p{3cm}}
xxx &\itemdash\ abc
\itemdash\ abc\\
\end{tabular}
\end{document}
Если вы реализуете это \itemdash
в своем коде, то все будет в порядке.
решение3
Не уверен, что здесь делает микрошрифт, но его можно скрыть с помощью рамки и нулевого пробела:
\documentclass[a4paper,12pt,]{report}
\usepackage[swedish, italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{pslatex}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[round]{natbib}
\usepackage{microtype}
\usepackage{longtable}
\usepackage[top=2cm, bottom=2cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{array}
\renewcommand{\baselinestretch}{1.05}
\renewcommand*{\familydefault}{\sfdefault}
%----------------------------------------
\begin{document}
\pagenumbering{gobble}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{3.5cm}}
\begin{longtable}{Rp{11cm}}
\textbf{Education}&\\
2010 -- 2014 &\textbf{University and degree}
\hskip0pt-- One course
\hskip0pt-- Another course
\hskip0pt-- Some interesting seminar\\
\textbf{Computer skills}&\\
&\hskip0pt-- Operating systems: Windows, Linux
\hskip0pt-- Other software
\hskip0pt-- Other software
\end{longtable}
\end{document}
решение4
Вы можете использовать itemize
среду, с опциями wide
и nosep
пакета enumitem
. Я даю два варианта, чтобы учесть выступ тире:
\documentclass[a4paper,12pt,]{report}
\usepackage[italian]{babel}%swedish,
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[round]{natbib}
\usepackage{microtype}
\usepackage{longtable}
\usepackage[vmargin=2cm, hmargin=2.5cm]{geometry}
\usepackage{array}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{3.5cm}}
\usepackage{enumitem}
\usepackage{setspace}
\setstretch{1.05}
\renewcommand*{\familydefault}{\sfdefault}
%----------------------------------------
\begin{document}
\pagenumbering{gobble}
{\setlist[itemize,1]{label=\textendash, wide =0.6em, nosep}
\begin{longtable}{R p{11cm}}
\textbf{Education}&\\
2010 - 2014 &\textbf{University and degree}
\begin{itemize}
\item One course
\item Another course
\item Some interesting seminar
\end{itemize}\\[-\topsep]
\textbf{Computer skills}
& \leavevmode\vspace{-\baselineskip}
\begin{itemize}
\item Operating systems: Windows, Linux
\item Other software
\item Other software
\end{itemize}
\end{longtable}}
{\setlist[itemize,1]{label = \,\textendash, wide, nosep}
\begin{longtable}{R p{11cm}}
\textbf{Education}&\\
2010 - 2014 &\textbf{University and degree}
\begin{itemize}
\item One course
\item Another course
\item Some interesting seminar
\end{itemize}\\[-\topsep]
\textbf{Computer skills}
& \leavevmode\vspace{-\baselineskip}
\begin{itemize}
\item Operating systems: Windows, Linux
\item Other software
\item Other software
\end{itemize}
\end{longtable}}
\end{document}