尝试一下邮政我尝试在双面文档上使用框,但出现了一个奇怪的问题。
为什么左边的框不像右边的框那样位于(外)边距的中心?
这是一个简单的例子:
\setuppagenumbering[alternative=doublesided]
\setuplayout[width=fit,
height=270mm,
rightmargin=60mm,
rightmargindistance=5mm]
\defineframedtext[sideboxframed][frame=on,
framecolor=black,
rulethickness=1pt,
width=5cm,
offset=overlay,
align=normal]
\defineuserdataalternative[enumeration:sidebox][renderingsetup=sidenote:sidebox]
\startsetups[sidenote:sidebox]
\margindata[inouter]{
\startsideboxframed
\getinlineuserdata
\stopsideboxframed
}
\stopsetups
\defineuserdata [sidebox] [alternative=enumeration:sidebox]
\starttext
\dorecurse{2}{\input knuth}
\startuserdata[sidebox]
\input ward
\stopuserdata
\dorecurse{2}{\input knuth}
\startuserdata[sidebox]
\input ward
\stopuserdata
\dorecurse{2}{\input knuth}
\startuserdata[sidebox]
\input ward
\stopuserdata
\dorecurse{2}{\input knuth}
\startuserdata[sidebox]
\input ward
\stopuserdata
\stoptext
答案1
您的示例中的问题在于如何设置页面右边距的值。当您使用ConTeXt 时,它会使用和的width=fit
值计算空间,从而使边距区域和页面边框之间没有空间。rightmargin
rightmargindistance
\setuppapersize[A4][A4,oversized]
\setuplayout
[width=fit,
rightmargin=60mm,
rightmargindistance=5mm,
location=middle]
\showframe
\starttext
\page[dummy]
\stoptext
当您使用 now \inouter
(或\margindata[inouter]
)将文本放在边距区域时,内容将与区域的左边距对齐,并在右侧留出空间。
\setuppapersize[A4][A4,oversized]
\setuplayout
[width=fit,
rightmargin=60mm,
rightmargindistance=5mm,
location=middle]
\showframe
\starttext
\inouter{\inframed[width=5cm]{Margin text}}
\input knuth
\stoptext
为了避免这种情况,您必须使用不同的方法来更改右边距的值。为此,您必须使用width=middle
并使用 键\setuplayout
设置右侧的空间cutspace
。 的值cutspace
应大于rightmargin
并rightmargindistance
合并以在边距区域和页面边框之间留出空间。
\setuppapersize[A4][A4,oversized]
\setuplayout
[width=middle,
cutspace=60mm,
rightmargin=50mm,
rightmargindistance=5mm,
location=middle]
\showframe
\starttext
\page[dummy]
\stoptext
为了确保奇数页和偶数页上的框架和文本块之间的距离相同,请将两者的宽度设置为相同的值。也不需要额外的框架,因为margindata
提供了可以访问的框架机制,marginframed
但最好创建一个新的实例来设置您自己的样式。
\setuppagenumbering [alternative=doublesided]
\setuplayout
[ width=middle, % textwidth = paperwidth - backspace - cutspace
cutspace=60mm,
rightmargin=50mm,
rightmargindistance=5mm]
\definemargindata [sidebox] [inouter]
\definemarginframed [sidebox] [inouter]
\setupmarginframed
[sidebox]
[frame=on,
rulethickness=1pt,
width=5cm,
offset=overlay,
framecolor=black,
align={normal,verytolerant}]
\defineuserdataalternative [enumeration:sidebox] [renderingsetup=sidenote:sidebox]
\showframe
\startsetups[sidenote:sidebox]
\margindata[sidebox]{\getinlineuserdata}
\stopsetups
\defineuserdata [sidebox] [alternative=enumeration:sidebox]
\starttext
\startbuffer
\dorecurse{2}{\input knuth}
\startuserdata[sidebox]
\input ward
\stopuserdata
\stopbuffer
\dorecurse{4}{\getbuffer}
\stoptext