问题总结如下!
我想将一些旧的(阅读:丑陋的自编码 html)教程转换为 pdf。它们仍然被人们阅读,所以我认为这是值得的。其他原因:
读者不断要求提供可打印的版本,以供阅读;
他们希望将其打印出来以做笔记和绘图(我也可以将其解释为重新措辞的要求,但我不会这样做。);
我想运用我所学到的关于排版的知识。
我的方法首先是满足个人笔记的空间需求。它们可能会进入页边距,因为页边距通常会提供一些空间。教程面向该主题的初学者,许多内容极其简化。这就需要内联注释、脚注或边注。我希望读者的个人笔记有较宽的页边距,我也希望将页边距用于教程中的注释。
现在边距变宽了,我也可以在边距中放置图表和表格标题(我需要两者!),这就是我遇到的问题。我尝试了 Will Robertson 的建议此问答,但边注被放置在上面文本。下面的代码是他的,但变成了 MWE:
\documentclass{article}
\usepackage{lipsum}
\makeatletter
\newcommand\margincaption[1]{%
\par
\setbox\@tempboxa=\hbox{\parbox{\marginparwidth}{\caption{#1}}}
\@tempdima=\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax
\par\null\hfill\usebox\@tempboxa\par
\vspace*{\dimexpr-\@tempdima-\baselineskip\relax}
}
\makeatother
\begin{document}
\lipsum[1]
\begin{figure}[tp]
\rule{\textwidth}{1em}
\margincaption{A black long line with lots of explanation so it fills up some space.}
\end{figure}
\lipsum[2]
\end{document}
我曾尝试使用 ConTeXt 来实现这一点,但字幕设置rightmargin
根本没有产生任何字幕。我询问了邮件列表,但我的印象是使用 pdfLaTeX(或 XeTeX 或 luaLaTeX)也可能实现这一点。
当我需要包含较长的示例代码行时,又出现了另一个问题。边距很宽,因此主文本区域比平时窄,这可能会导致冲突。无论如何,有没有办法包含过长的行而不生成过满的水平盒警告?不过这是一个小问题 - 长行能被打破。
如何在页边空白处放置图表和表格标题?
我怎样才能包含延伸到边缘的单线而不产生冲突?
如果您觉得我的布局方法不合适,您是否有我可以尝试的绝妙主意?
答案1
正如其他人所说,您可以使用tufte-book
文档类。它提供侧注区域中的标题以及 fullwidth
横跨主文本块和侧注区域的环境。
\documentclass{tufte-book}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[!ht]
\centering
\rule{4cm}{2cm}
\caption{A black rectangle with lots of text so it fills up some space.}
\end{figure}
\lipsum[1]
\begin{table}[!ht]
\centering
\rule{4cm}{2cm}
\caption{A black rectangle with lots of text so it fills up some space.}
\end{table}
\begin{fullwidth}
\lipsum[1]
\end{fullwidth}
\end{document}
如果您不想使用该类tufte-book
,那么您可以将标准类之一(book
,report
)与geometry
包一起使用以更改页面布局,floatrow
在页边距中添加标题的包以及changepage
更改部分文档页边距的包:
\documentclass{book}
\usepackage[margin=4cm,marginparwidth=3cm]{geometry}
\usepackage{floatrow}
\usepackage{changepage}
\usepackage{lipsum}
\floatsetup{margins=hangleft,capposition=beside,
capbesideposition={top,left},floatwidth=\textwidth}
\begin{document}
\lipsum[1]
\begin{figure}[!ht]
\centering
\rule{4cm}{2cm}
\caption{A black rectangle with lots of text so it fills up some space.}
\end{figure}
\lipsum[1]
\begin{table}[!ht]
\centering
\rule{4cm}{2cm}
\caption{A black rectangle with lots of text so it fills up some space.}
\end{table}
\begin{adjustwidth}{-3cm}{}
\lipsum[1]
\end{adjustwidth}
\end{document}
scrbook
您还可以考虑使用 KOMA-Script 包( 、scrreprt
)或文档类中的一个类memoir
,并根据您的需要进行调整。
答案2
答案3
答案4
看一下 floatrow 包。