Я обнаружил проблему в том, что an \hspace
ведет себя не так, как я ожидал. Я дал ему -5em, но он скомпилировался только около -4.5em. Изменение семейства шрифтов меняет размер ошибки, но я думаю, что ошибка внутри семейства шрифтов постоянна в единицах em.
\documentclass[extrafontsizes, 48pt]{memoir}
\usepackage[left=7cm, right=0cm]{geometry}
\begin{document}
\ttfamily
\newlength\savetabcolsep\setlength\savetabcolsep\tabcolsep\setlength\tabcolsep{0pt}
\newlength\leftitemspace\setlength\leftitemspace{5em}
Foo
\begin{tabular}{|p{\leftitemspace}|p{\linewidth}}
Foo & Bar\\
Foo 2 & Bar 2\\
Foo 3 & Bar3
\end{tabular}
\rule{1em}{1pt}
\hspace*{-\leftitemspace} % here is the problem
\begin{tabular}{|p{\leftitemspace}|p{\linewidth}}
Foo & Bar\\
Foo 2 & Bar 2\\
\rule{\leftitemspace}{1pt} & Bar 3
\end{tabular}
\hspace{-\leftitemspace}\rule{\leftitemspace}{1pt}Bar
\setlength\tabcolsep\savetabcolsep
\end{document}
На следующем рисунке я пытаюсь выровнять вертикальные линии таблицы по горизонтали:
решение1
\hspace*{-\leftitemspace}% <<<<<<<<<<<<<<<<< Space removed
\begin{tabular}{|p{\leftitemspace}|p{\linewidth}}
Обратите внимание, что строки в вашем файле-образце не выровнены по левому краю, поскольку каждая из них начинает новый абзац. Если вы хотите, чтобы материал начинался с левой границы текстовой области, добавьте его \noindent
в каждом абзаце или установите \parindent=0pt
для всего документа, добавив его в преамбулу.
\noindent
\hspace*{-\leftitemspace}% <<<<<<<<<<<<<<<<< Space removed
\begin{tabular}{|p{\leftitemspace}|p{\linewidth}}
\parindent=0pt
\begin{document}
Рекомендую добавить опцию showframe
в geometry
пакет при разработке макета документа. Тогда будут указаны области текста/колонтитула/подвала/полей.
\usepackage[left=7cm, right=0cm,showframe]{geometry}