Нежелательный пробел перед дефисом в longtable

Нежелательный пробел перед дефисом в longtable

У меня возникла небольшая проблема с набором текста внутри 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}

Вывод с помощью <code>микротипа</code>

Как вы можете видеть на рисунке, если перед дефисом есть текст («Университет и степень»), список отображается правильно, но строка, начинающаяся с «Операционные системы», имеет отступ.

Итак, как избавиться от пробела перед дефисом, не прибегая к комментированию 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} 

введите описание изображения здесь

Связанный контент