ConTeXt:边距框和双面问题

ConTeXt:边距框和双面问题

尝试一下邮政我尝试在双面文档上使用框,但出现了一个奇怪的问题。

为什么左边的框不像右边的框那样位于(外)边距的中心?

在此处输入图片描述

这是一个简单的例子:

\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值计算空间,从而使边距区域和页面边框之间没有空间。rightmarginrightmargindistance

\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应大于rightmarginrightmargindistance合并以在边距区域和页面边框之间留出空间。

\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

相关内容