![ConTeXt 中带有水平线和多个文本元素的精美标题/标题](https://linux22.com/image/420521/ConTeXt%20%E4%B8%AD%E5%B8%A6%E6%9C%89%E6%B0%B4%E5%B9%B3%E7%BA%BF%E5%92%8C%E5%A4%9A%E4%B8%AA%E6%96%87%E6%9C%AC%E5%85%83%E7%B4%A0%E7%9A%84%E7%B2%BE%E7%BE%8E%E6%A0%87%E9%A2%98%2F%E6%A0%87%E9%A2%98.png)
我想创建如下标题:
_________________________________________________________________________________
| | | Sufix |
| Prefix unwrapped (CAPS) | Unwrapped title (Small Caps) | wraped |
| | | as needed |
=================================================================================
Ba ba Ba ba
• Sub text 1 • Sub text 2 • Sub text 3 • Sub text 4 •
Ba Black Sheep
它必须是:
- 占满整个页面
- 彩色下划线(=)
- 顶部、左侧、右侧或中间均无任何问题 (|, _)
- 子文本由分隔符 (•) 分隔,居中或顶部对齐并进行调整以达到最佳效果。
到目前为止我所做的是(标题/页眉的第一部分):
\define[3]\TITLE{\midaligned{\framed[frame=off,align=middle,bottomframe=on,framecolor=blue]
{\inframed[frame=off]{{\tfa\WORD#1}: {\tfb\sc#2}}\inframed[frame=off]{{\tfa, #3}}}}}
但这并没有产生预期的结果。
我该怎么做?
答案1
我不完全了解规格,所以让我尝试反复回答这个问题。
- 我假设的宽度为
Prefix + Title < \textwdith
。如果不是,那么这两个中的一个也必须换行。 - 不清楚如何
Prefix
以及应该如何垂直对齐。我选择了中间对齐(在 ConTeXt 中Title
称为)lohi
从概念上讲,最简单的方法是使用表。因此,基本宏是:
\define[3]\TITLE
{\startTABLE[setups=table:title]
\NC #1 \NC #2 \NC #3 \NC \NR
\stopTABLE}
现在,我们需要做的就是定义设置table:title
以获得正确的格式,可以按如下方式完成:
\startsetups table:title
\setupTABLE[each][each][frame=off,bottomframe=on,rulethickness=2bp]
\setupTABLE[column][1][style=WORD, align=lohi]
\setupTABLE[column][2][style=\sc, align=lohi]
\setupTABLE[column][3][align={hyphenated,tolerant}]
\stopsetups
就是这样!
以下是带有输出的完整代码:
\startsetups table:title
\setupTABLE[each][each][frame=off,bottomframe=on,rulethickness=2bp]
\setupTABLE[column][1][style=WORD, align=lohi]
\setupTABLE[column][2][style=\sc, align=lohi]
\setupTABLE[column][3][align={hyphenated,tolerant}]
\stopsetups
\define[3]\TITLE
{\startTABLE[setups=table:title]
\NC #1 \NC #2 \NC #3 \NC \NR
\stopTABLE}
\showframe % To visualize the page frame
\starttext
\TITLE{prefix}{Unwrapped title}{\dorecurse{5}{A very long text\space}}
\stoptext
这使
顶部和侧面的框架只是为了\showframe
显示表格延伸到页面边界的边缘。