ConTeXt:统一处理边距和文本中的空白

ConTeXt:统一处理边距和文本中的空白

为什么边距和文本主体中的空白处理方式不同?

\setuppapersize[letter]

\setupwhitespace[medium]

\setuplayout
    [backspace=4.375in,
     width=3.625in,
     leftmargin=3.625in,
     rightmargin=0in,
     leftmargindistance=0.25in,
     %
     topspace=0.25in,
     height=10.5in,
     header=0.25in,
     headerdistance=0.25in,
     footer=0.25in,
     footerdistance=0.25in,
    ]

\setupmarginblock
    [location=left,
     width=\leftmarginwidth,
    ]

\define[1]\heading{%
    \dontleavehmode{\bfc\setupinterlinespace\strut#1}%
    \blank[big,samepage]%
}

\showframe

\showallmakeup

\starttext
    \startmarginblock
        \heading{Left 1}
        \samplefile{ward}

        \heading{Left 2}
        \samplefile{knuth}

        \samplefile{weisman}

        \heading{Left 3}
        \startitemize
        \item 1
        \item 2
        \item 3
        \stopitemize
        \samplefile{ward}
    \stopmarginblock

    \heading{Right 1}
    \samplefile{ward}

    \heading{Right 2}
    \samplefile{knuth}

    \samplefile{weisman}

    \heading{Right 3}
    \startitemize
    \item 1
    \item 2
    \item 3
    \stopitemize
    \samplefile{ward}
\stoptext

如何增加上方的空间,\heading而不会在页面文本顶部、标题下方引入不必要的空白?\blank开头的A\heading不会在边距中折叠,\vbox to 2ex{}只会在边距中折叠,并且\vbox to 2ex{\strut}永远不会折叠。我该怎么办?

\heading如何在不删除 的情况下保持页边距和页面文本下方空间的统一\setupinterlinespace?目前,页边距标题中有多余的空间,导致两列不对齐。这是一个轻微的影响,最终导致左列比右列长一个句子

这是在 ConTeXt 中实现 Friggeri。我使用边距而不是列是有原因的 - 主要是为了让文本在页面之间流动,而不是在列之间流动。

注意:我不想使用网格排版,因为我希望随着列内容的不同,行会变得不对齐。此外,我更喜欢对文本区域中的主要内容使用非网格标准 TeX 排版。

总的来说,我希望得到这样的结果:

\setuppapersize[letter]

\setuplayout
    [backspace=0.5in,
     width=7.5in,
     %
     topspace=0.25in,
     height=10.5in,
     header=0.25in,
     headerdistance=0.25in,
     footer=0.25in,
     footerdistance=0.25in,
    ]

\setupwhitespace[medium]

\define[1]\heading{%
    \blank[big,samepage]%
    \dontleavehmode{\bfc\setupinterlinespace\strut#1}%
    \blank[medium,samepage]%
}

\definecolumnset[TwoColumns][n=2]

\showframe


\starttext
    \startcolumnset[TwoColumns]

        \heading{Left 1}
        \samplefile{ward}

        \heading{Left 2}
        \samplefile{knuth}

        \samplefile{weisman}

        \heading{Left 3}
        \startitemize
        \item 1
        \item 2
        \item 3
        \stopitemize
        \samplefile{jojomayer}

    \column

        \heading{Right 1}
        \samplefile{ward}

        \heading{Right 2}
        \samplefile{knuth}

        \samplefile{weisman}

        \heading{Right 3}
        \startitemize
        \item 1
        \item 2
        \item 3
        \stopitemize
        \samplefile{jojomayer}

    \stopcolumnset
\stoptext

答案1

这与我的回答基本相同ConTeXt:统一行高,但\blank[disable,nowhite]开头是 。

\setuppapersize[letter]

\setupwhitespace[medium]

\setuplayout
    [backspace=4.375in,
     width=3.625in,
     leftmargin=3.625in,
     rightmargin=0in,
     leftmargindistance=0.25in,
     %
     topspace=0.25in,
     height=10.5in,
     header=0.25in,
     headerdistance=0.25in,
     footer=0.25in,
     footerdistance=0.25in,
    ]

\setupmarginblock
    [location=left,
     width=\leftmarginwidth,
    ]

\define[1]\heading{%
    \blank[big,samepage]%
    \dontleavehmode{\bfc\setupinterlinespace\strut#1}%
    \blank[medium,samepage]%
}

\showframe

\showallmakeup

\starttext
    \startmarginblock
      \vbox to \textheight {
        \blank[disable,nowhite]
        % discard leading vertical space
        \heading{Left 1}
        \samplefile{ward}

        \heading{Left 2}
        \samplefile{knuth}

        \samplefile{weisman}

        \heading{Left 3}
        \startitemize
        \item 1
        \item 2
        \item 3
        \stopitemize
        \samplefile{ward}
        % fill up the box
        \strut\par\vfill
      }
    \stopmarginblock

    \heading{Right 1}
    \samplefile{ward}

    \heading{Right 2}
    \samplefile{knuth}

    \samplefile{weisman}

    \heading{Right 3}
    \startitemize
    \item 1
    \item 2
    \item 3
    \stopitemize
    \samplefile{ward}
\stoptext

在此处输入图片描述

相关内容