![从给定点到后续页面添加垂直线边距对齐](https://linux22.com/image/268623/%E4%BB%8E%E7%BB%99%E5%AE%9A%E7%82%B9%E5%88%B0%E5%90%8E%E7%BB%AD%E9%A1%B5%E9%9D%A2%E6%B7%BB%E5%8A%A0%E5%9E%82%E7%9B%B4%E7%BA%BF%E8%BE%B9%E8%B7%9D%E5%AF%B9%E9%BD%90.png)
使用回忆录包,我想在边缘有一条垂直线,如下所示:
Some leading content
... vertical space ...
----------------------------------
XYZ | Content A
|
| Content B
|
| Content C
|
| ...
|
| Content N
*** page break ***
| Content A1
|
| Content B1
|
| Content C2
|
| ...
|
...
我希望内容 XYZ 位于边距注释或段落中(marginpar
,垂直线沿着页面边距,内容 A 位于该区域宽度的页面中。
内容将跨越多页,并且有些复杂 - 例如,多个表格本身可能跨越多页,并且内容是对齐的。本质上,文档的主体将是内容* - 因此我希望将其作为页面的主体。
因此,我的待办事项列表如下:
- 将页面边距设置得更大一些(
\oddsidemargin
); - 添加设置在标准边距位置的引入内容;
- 沿着页边距添加一条跨越多页的垂直线;
- 添加边距段落(对于“XYZ”)。
事实上,我之前已经弄清楚了这一点,但后来忘记了如何解决,所以我发布这篇文章,部分是为了保存解决方案,也因为我相信几乎所有读到这篇文章的人都比我更了解如何实现目标。一旦我重新发现它,我就会发布我自己的解决方案。
尽管我会发布更详细的答案,但以下是我的初步想法:
答案1
如果你滥用了这个geometry
包裹会怎么样?
%\documentclass[12pt]{memoir}
\documentclass[oneside, 12pt]{memoir}
\usepackage[showframe]{geometry}
\usepackage{lipsum,longtable}
\makeatletter % <-- all from geometry.sty, but with some lines commented out
\renewcommand*{\Gm@vrules@mpi}{%
\hb@xt@\@tempdima{\llap%{\Gm@vrule}
\ignorespaces
\hskip \textwidth\Gm@vrule
\hskip \marginparsep
%\llap{\Gm@vrule}\hfil\Gm@vrule
}}%
\renewcommand*{\Gm@vrules@mpii}{%
\hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep
%\llap{\Gm@vrule}
\llap{}
\ignorespaces
\hskip \marginparwidth
\rlap{\Gm@vrule}
\hskip \marginparsep
\llap{}
% \llap{\Gm@vrule}
\hskip\textwidth
\rlap{}
% \rlap{\Gm@vrule}
\hss}}%
\newif\ifGm@pageframes
\Gm@pageframestrue
\renewcommand*{\Gm@pageframes}{%
\vb@xt@\z@{%
\ifGm@showcrop
\vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset%
\hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset%
\vb@xt@\Gm@layoutheight{%
\let\protect\relax
\hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}%
\vfil
\hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}%
\hss}%
\vss}%
\fi%
\ifGm@showframe
\if@twoside
\ifodd\count\z@
\let\@themargin\oddsidemargin
\else
\let\@themargin\evensidemargin
\fi
\fi
\moveright\@themargin%
\vb@xt@\z@{%
\vskip\topmargin%\vb@xt@\z@{\vss\Gm@hrule}%
\vskip\headheight%\vb@xt@\z@{\vss\Gm@hruled}%
\vskip\headsep%\vb@xt@\z@{\vss\Gm@hrule}%
\@tempdima\textwidth
\advance\@tempdima by \marginparsep
\advance\@tempdima by \marginparwidth
\if@mparswitch
\ifodd\count\z@
\Gm@vrules@mpi
\else
\Gm@vrules@mpii
\fi
\else
\Gm@vrules@mpi
\fi
% \vb@xt@\z@{\vss\Gm@hrule}%
% \vskip\footskip\vb@xt@\z@{\vss\Gm@hruled}%
\vss}%
\fi%
}}%
\makeatother
\begin{document}
a \marginpar{test}\lipsum
\newpage
b \marginpar{test}
\begin{longtable}{p{4in}}
\lipsum
\end{longtable}
\end{document}
为了使.tex
文件更整洁,您可以将其包装在您自己的个人包中,\RequirePackage[showframe]{geometry}
并在其前面加上:\usepackage{<filename>}
答案2
以下是我所做的工作,序言如下:
\documentclass[oneside,12pt]{memoir}
\usepackage{lipsum}
\usepackage{everypage}
\usepackage[absolute]{textpos}%
% textpos settings
\setlength{\TPHorizModule}{1cm}%
\setlength{\TPVertModule}{1cm}%
\TPMargin{0.0cm}%
% page dimensions
\settrimmedsize{11in}{8.5in}{*}
\settrims{0pt}{0pt}
\settypeblocksize{8in}{10.5in}{*}
\setlrmarginsandblock{4cm}{0.5in}{*}
\setulmarginsandblock{2cm}{1.5cm}{*}
\setheaderspaces{0cm}{*}{*}
\checkandfixthelayout[nearest]
% sidebars
\sidebarmargin{left}
\renewcommand{\sidebarfont}{\footnotesize}
\setlength\sidebarwidth{2.6cm}
\setlength\sidebartopsep{6cm}
\renewcommand*{\sidebarform}{\raggedright}
为了在每一页上创建整页垂直条,我使用everypage
:
% everypage - add vertical line
\AddEverypageHook{
% height is 29.21 (stock height - 11.5in) - 2cm - pad (2cm) = 25cm
\ifnum\thepage>1
\begin{textblock}{1,25}(3.5,1)
\rule{0.2pt}{25cm}
\end{textblock}
\fi
}
在文档的第一页中:
\begin{textblock}{5}(2,2.2)
\parbox{5cm}{%
This appears in a static position.
}
\end{textblock}
% horizontal line
% ~ width of stock 21.6cm (8.5in) minus 3cm for margins
\begin{textblock}{18,1}(1,7)
\rule{19.6cm}{0.2pt}
\end{textblock}
% vertical line (part of page; leaving room for header}
% ~ height is 29.21 (stock height - 11.5in) - 6cm - pad (2cm) = 21cm
\begin{textblock}{1,21}(3.5,7)
\rule{0.2pt}{21cm}
\end{textblock}
\sidebar{Some sidebar text}
... Content A-Z
当然,我会将对此有实质性改进的答案标记为正确。