多列外边距中的文本

多列外边距中的文本

我想在页面的外边距(即偶数页的左侧和奇数页的右侧)放置一些文本。\inoutermargin{Text}当我将其用于列时,我的简单使用方法失败了。然后文本打印在第一列的外边距中。有人能给我指出正确的方向吗?

我正在使用 ConTeXt ver: 2012.05.30 11:26 MKIV

\starttext

\setuppagenumbering[alternative=doublesided]

\startcolumns
\inoutermargin{More text}
\input knuth
\stopcolumns

\page[yes]

\startcolumns
\inoutermargin{Text}
\input knuth
\stopcolumns

\stoptext

答案1

查看邮件列表,\inoutermargin似乎在 ConTeXt MkIV 中已弃用(话虽如此,我在 MkII 中也看到了同样的问题)。考虑到这一点,再加上ConTeXt 维基页面\inoutermargin,您似乎想\inmargin将材料放在左边,或者\inother将其放在右边:

\setuppagenumbering[alternative=doublesided]

\starttext

\startcolumns
\inmargin{Text}
\input knuth
\inother{More text}
\stopcolumns

\hairline

\inother{Text}
\input knuth

\stoptext

进一步的测试表明,要求的行为并不容易实现。如果你看看typo-mar.mkiv,你会发现定义

% text

\definemargindata [inleft]     [\v!left ]    [\c!margin=\v!margin,\c!width=\leftmarginwidth ,\c!align=\v!flushright]
\definemargindata [inright]    [\v!right]    [\c!margin=\v!margin,\c!width=\rightmarginwidth,\c!align=\v!flushleft]
\definemargindata [inouter]    [\v!outer]    [\c!margin=\v!margin,\c!width=\outermarginwidth,\c!align=\v!inner]
\definemargindata [ininner]    [\v!inner]    [\c!margin=\v!margin,\c!width=\innermarginwidth,\c!align=\v!outer]

% no longer auto auto-other

\definemargindata [inmargin]   [\v!left]     [\c!margin=\v!margin,\c!width=\leftmarginwidth, \c!align=\v!flushright]
\definemargindata [inother]    [\v!right]    [\c!margin=\v!margin,\c!width=\rightmarginwidth,\c!align=\v!flushleft]

\definemargindata [margintext] [\v!left]     [\c!margin=\v!margin,\c!width=\leftmarginwidth, \c!align=\v!flushright,\c!stack=\v!yes]

因此你可能会尝试

\setuppagenumbering[alternative=doublesided]

\starttext

\startcolumns
\inouter{Text}
\input knuth
\inouter{More text}
\stopcolumns

\hairline

\inouter{Text}
\input knuth

\stoptext

确实将内容放在外边距中(\ininner内边距中也有内容)。然而,这似乎没有考虑到多列的存在,IE它位于列的“边缘”,而不是页面的“边缘”。

typo-mar.lua函数中第 434 行realign表明 margintext 的框按 hsize 移动:

            if location == v_left then
                move_x = (reference.x or 0) - (blob.x or 0)
            elseif location == v_right then
                move_x = (reference.x or 0) - (blob.x or 0) + (reference.w or 0) - hsize
            else

的宽度hsize与当前所在的列一样宽,并且变量columns只定义一次,从未在文件中使用过。因此,这也表明不考虑列。

相关内容