我看到一本书,除了正文外,还有来自其他书本挤在底部边缘。我想知道这是否可以使用 LaTeX 来实现?更具体地说,我想知道是否可以有两个单独的文本并产生输出,使得一个文本位于页面的主要内容区域,另一个文本位于边缘?请注意,两个文本可能不适合放在一页上,而需要跨多页。
答案1
A非常粗略的方法,将另一本书的材料收集在一个垂直的盒子里,并利用\vsplit
分割盒子的顶部并将其放在正文的左侧。诚然,结果并不好,但也许可以对其进行完善。
\documentclass{article}
\textwidth=200pt\relax %??
\usepackage{xgalley,xparse}
\usepackage{lipsum}
\ExplSyntaxOn\makeatletter
\box_new:N \l_otext_tmpa_box
\box_new:N \g_otext_box
\dim_new:N \g_otext_prevdepth_dim
\skip_new:N \l_otext_sep_skip
\skip_set:Nn \l_otext_sep_skip { 20 pt }
\dim_new:N \g_otext_side_width_dim
\dim_gset:Nn \g_otext_side_width_dim { 100 pt }
\NewDocumentEnvironment{otext}{}
{
\vbox_gset:Nw \g_otext_box
\color_group_begin:
\vbox_unpack_clear:N \g_otext_box
\dim_gset_eq:NN \tex_prevdepth:D \g_otext_prevdepth_dim
\dim_set_eq:NN \l_galley_width_dim \g_otext_side_width_dim
\galley_level:
\bool_gset_false:N \g_galley_omit_next_indent_bool
\raggedleft
}
{
\color_group_end:
\dim_gset_eq:NN \g_otext_prevdepth_dim \tex_prevdepth:D
\vbox_set_end:
}
% Patch \output.
\tl_set:Nx \l_tmpa_tl { \the\output }
\tl_put_left:Nn \l_tmpa_tl
{
\vbox_set_split_to_ht:NNn \l_otext_tmpa_box \g_otext_box
{ \box_ht:N \@cclv + \box_dp:N \@cclv }
\vbox_set:Nn \@cclv
{
\hbox:n
{
\box_use_drop:N \l_otext_tmpa_box
\skip_horizontal:N \l_otext_sep_skip
\box_use_drop:N \@cclv
}
}
}
\exp_args:No \output \l_tmpa_tl
\makeatother\ExplSyntaxOff
\begin{document}
\raggedright
\begin{otext}
\section{Paragraphs 1 and 2}
\lipsum[1-2]
\end{otext}
\begin{otext}
\section{Paragraphs 3 and 4}
\lipsum[3-4]
\end{otext}
\section{Paragraphs 11 to 13}
\lipsum[11-13]
\begin{otext}
\section{Paragraphs 5 to 7}
\lipsum[5-7]
\end{otext}
\section{Paragraphs 14 to 27}
\lipsum[14-27]
\end{document}
答案2
您可以使用\marginpar
将第二本书放在页边空白处。我准备了一个示例,其中显示了一个图形、一个表格和一些文本。sidefigure
和sidetable
环境取自侧记包。可以将整本书放在页边空白处。
有两个问题需要解决:如何同步“两本书”,即分页符在哪里,如果第一本书适合页面,但页边距中的书不适合,会发生什么情况。甚至可以将第二本书浮动在页边距中,比如说一个章节。您可以使用该包来实现这一点。如果您想尝试这样做,请先将第二本书的完整章节放在页边距中,然后再放第一本书。您可能还marginfix
必须使用该包。morefloats
第二件事是编号。图表应该如何编号?单独用前缀、随后还是其他方式?
请更改宏中的文件名\includegraphics
来尝试示例。
此外,事实证明marginfix
需要第二个文档中的段落,一次一个。因此,\marginpar{\lipsum[1-2]}
它想要\marginpar{\lipsum[1]}\marginpar{\lipsum[2]}
。
\documentclass[]{article}
\usepackage{caption}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{morefloats}
\usepackage{marginfix}
\usepackage[paperwidth=170mm, paperheight=240mm, left=40pt, top=40pt, textwidth=220pt, marginparsep=20pt, marginparwidth=160pt, textheight=560pt, footskip=40pt]{geometry}
\makeatletter
\newsavebox{\@sidenotes@sidefigurebox}
\newenvironment{sidefigure}[1][]%
{\begin{lrbox}{\@sidenotes@sidefigurebox}%
\begin{minipage}{\marginparwidth}%
\captionsetup{type=figure}}%
{ \end{minipage}%
\end{lrbox}%
\marginpar{\usebox{\@sidenotes@sidefigurebox}}}
\newsavebox{\@sidenotes@sidetablebox}
\newenvironment{sidetable}[1][]%
{\begin{lrbox}{\@sidenotes@sidetablebox}%
\begin{minipage}{\marginparwidth}%
\captionsetup{type=table}}%
{ \end{minipage}%
\end{lrbox}%
\marginpar{\usebox{\@sidenotes@sidetablebox}}}
\makeatother
\begin{document}
%% this is document 2
\marginpar{\lipsum[4]}
\begin{sidefigure}
\includegraphics{broken_loop}
\caption{This is the caption}
\label{alabel}
\end{sidefigure}
\begin{sidetable}
\centering
% \fontfamily{ppl}\selectfont
\begin{tabular}{lllll}
\toprule
Hg&Sn&Pb&Cd&Tl \\
\midrule
0.50&0.47&0.48&0.5&0.5\\
\bottomrule
\end{tabular}
\caption{A table}
\end{sidetable}
\marginpar{\lipsum[2]}
\marginpar{\lipsum[3]}
\marginpar{\lipsum[4]}
\marginpar{\lipsum[5]}
\marginpar{\lipsum[6]}
%% this is document 1
\lipsum[1-9]
\end{document}
答案3
您可以使用脚注来执行此操作。如果您将其他文本挤在页面底部,您可能也不会有额外的脚注,或者您可以尝试使用允许多个脚注的软件包之一。(必须承认我没有尝试过这个......)或者您可以使用边注。看看这个:
\documentclass{article}
\usepackage[latin]{babel}
\usepackage{blindtext}
% Don't print a footnote number:
\let\thefootnote\relax
% Reserve 40 % of a page for the squeezed contents:
\setlength{\dimen\footins}{0.4\textheight}
% Let footnotes break across pages without penalities:
\interfootnotelinepenalty=0
\begin{document}
\footnotetext{\blindtext[40]}
\Blinddocument
% If the squeezed text is longer than the main part, allow it to fill the
% entire page:
\setlength{\dimen\footins}{\textheight}
\end{document}