![如何用图形实现网格排版?](https://linux22.com/image/415884/%E5%A6%82%E4%BD%95%E7%94%A8%E5%9B%BE%E5%BD%A2%E5%AE%9E%E7%8E%B0%E7%BD%91%E6%A0%BC%E6%8E%92%E7%89%88%EF%BC%9F.png)
我们出版社对出版的书的要求之一是网格排版。当然我已经研究过如何使用\raggedbottom
和调整所有垂直长度来实现这一点。但最后还有一件事需要手动摆弄,我不知道我的思维错误在哪里。
因此,我们有一张图像,其原始值为W267.0mm x H100.5mm
,由于纸上有20mm
边距A4
,我们将图像缩放为\textwidth
,现在有W170.0mm x H63.99mm
或 转换为 Adobe Points W481.89p x H 181.39bp
。我的想法是,根据网格实现排版。我发现 的下一个倍数12bp
是192bp
,差是10.61bp
。如果我应用这个空间,图像下方的文本应该再次遵循网格。将所有内容放入代码中如下所示:
\documentclass[a4paper]{scrartcl}
\usepackage[left=20mm,right=20mm]{geometry}
\usepackage{lipsum,graphicx}
\setkomafont{caption}{\fontsize{10bp}{12bp}\selectfont}
\setkomafont{captionlabel}{\fontsize{10bp}{12bp}\selectfont}
\setlength{\textfloatsep}{0bp}
\setlength{\intextsep}{0bp}
\setlength{\abovecaptionskip}{10.61bp}
\setlength{\belowcaptionskip}{0bp}
\raggedbottom
\begin{document}
\fontsize{10bp}{12bp}\selectfont
\lipsum[1-3]
\begin{figure}[h]
\centering
\includegraphics[width=170mm,height=63.99mm]{example-image-A}
\caption{Just a test}
\end{figure}
\lipsum
\lipsum
\end{document}
但是,我准备了对此页面进行目视检查并将LaTeX
其用于此,因此我使用上面的输出并将其用作Registerhaltigkeit.pdf
以下代码:
\documentclass[a4paper]{scrartcl}
\usepackage[absolute]{textpos}
\usepackage{graphicx,pgffor}
\pagestyle{empty}
\begin{document}
\foreach \x [evaluate=\x as \y using int(\x+1)] in {1}{
\newpage
\begin{textblock*}{105mm}[0,0](0mm,0mm)%
\noindent%
\includegraphics[page=\x,trim=0mm 0mm 105mm 0mm,width=105mm,clip]{Registerhaltigkeit.pdf}%
\end{textblock*}%
\begin{textblock*}{105mm}[0,0](105mm,0mm)%
\noindent%
\includegraphics[page=\y,trim=105mm 0mm 0mm 0mm,width=105mm,clip]{Registerhaltigkeit.pdf}%
\end{textblock*}%
~
}
\end{document}
最终结果显示,截至目前,所有内容均已注册,但两页之间存在偏移:
我做错了什么,我弄错了哪些数字,或者我错过了哪些内部细节?一如既往地感谢您的支持。
在 @barbara beeton 评论之后
@barbara beeton 的评论让我想到我想回答的是,只使用article
而不是scrartcl
,它不会改变任何东西,但事实并非如此。使用scrbook
而不是scrartcl
并没有真正改变某些东西,但使用book
而不是scrbook
会改变某些东西。
这是我的新代码,它使用标准book
类和caption
包:
%\documentclass[a4paper]{scrartcl}
\documentclass{book}
\usepackage[left=20mm,right=20mm,a4paper]{geometry}
\usepackage{lipsum,graphicx}
%\setkomafont{caption}{\fontsize{10bp}{12bp}\selectfont}
%\setkomafont{captionlabel}{\fontsize{10bp}{12bp}\selectfont}
\usepackage{caption}
\DeclareCaptionFont{MyFont}{\fontsize{10bp}{12bp}\selectfont}
\captionsetup[figure]{font=MyFont,labelfont=MyFont}
\setlength{\textfloatsep}{0bp}
\setlength{\intextsep}{0bp}
\setlength{\abovecaptionskip}{10.61bp}
\setlength{\belowcaptionskip}{0bp}
\raggedbottom
\begin{document}
\fontsize{10bp}{12bp}\selectfont
\lipsum[1-3]
\begin{figure}[h]
\centering
\includegraphics[width=170mm,height=63.99mm]{example-image-A}
\caption{Just a test}
\end{figure}
\lipsum
\lipsum
\end{document}
所以你可以看到,现在图形之后的所有内容都设置在网格上,这意味着我的计算是正确的。但是现在我还有一些问题:
- 图形标题和以下文本之间添加了什么额外间距?
- 为什么它与垂直距离相匹配或者这个空间从哪里取而代之,以便线条随后再次匹配?
- 添加的额外空间
KOMA-Script
显然会扰乱垂直间距吗?
也许你能给我一些提示?
好的,我找到了部分答案,这是一个中间结果,我也会在接下来的几天发布答案:
答案1
基本上,您需要确保您的图形及其周围的空间将保持在网格内。由于您使用了带有“h”的图形环境,我假设您希望它在文本中(但我希望您知道这可能会浮动,因为“h”仅表示“如果适合则为 h”。问题是浮动图形仅在一侧有空间,而文本内图形在上方和下方都有空间(并且可能 \lineskip 因为图形只是一个大框)。
我猜最好的办法是定义您自己的环境,开始一个图形环境,然后将图形内容(包括标题)排版到一个命名框中,然后测量该命名框,最后通过在上面和下面添加额外的空间来改变其尺寸以满足您的网格要求,然后 \usebox{myadjustedbox},然后结束图形环境。此外,您还需要调整浮动参数,使其刚性并适合您用作高度步骤的任何内容。
或者,如果您总是明确地将图形放在文本内,则可以避免使用图形环境,而是使用 \captionof(来自 float 包)来获取标题。您可以随意使用假图形周围的空格。
我知道这不是一个完整的食谱,但这大致是所需要的。
\showoutput 是一个很好的助手,可以查看在哪里添加了哪些空格。caption 添加的额外空格取决于您使用的类(或包),但通常是 \abovecaptionskip。要调整的浮点参数是 \intextsep、\floatsep、\textfloatsep 等。