我與 ConteXt 合作。在 StackExchange 上,我找到了一個 LateX 程式碼,用於在文字和邊距/邊距段落之間放置一條線。這條線在下圖中可見。
之後,我切換到 ConteXt。在 ConteXt 中,經過幾個小時的搜索,我真的不知道如何做到這一點。我希望任何人都可以幫助我。到目前為止,我正在開發的專案有以下程式碼:
\setuppapersize[A5]
\setuplayout[backspace=15mm, width=90mm, rightmargin=35mm]
\showframe[rightmargin]
\setuppagenumbering[alternative=doublesided, location={footer,inright, align=right}]
\setupinmargin[both][style=\bfx\setupinterlinespace,align=right]
\mainlanguage[la]
\language[la]
\setuphyphenation[method=traditional]
\setuptolerance[horizontal,strict] %zorgt voor minder overfull boxes
\setupitemize[packed]
\setuplinenumbering[step=5, location=inner, align=outer]
\setupcolors[state=start]
\setupindenting[small, yes]
\setupinmargin[style=small, align=right, location=outer]
\setupheadertexts[subject][title]
\setupheader[section][textstyle={sc,bold}]
\usemodule[caesar]
\setupbodyfont[11pt]
\starttext
\setupinterlinespace[big]
\margintext{vulpes}
\title{\color[orange]{\sc\bold{Corvus et Vulpēs}}}
\subject{\sc\bold{Apud capitulum X}}
\startlinenumbering
Corvus est avis, quae nōn tanta est\margintext{dhg h hh hhhh fskfa} quanta \margintext{fdgfsg fsggfs}aquila. Pedēs, cauda, ālae, rōstrum et cētera nigra sunt. Cum per āera volat, ālās movēre necesse est. Cum in arboribus sedet, nōn cadit. Pedibus enim sē rāmīs tenēre potest neque tam crassa est ut puer Rōmānus. Ergō etiam ā tenuibus rāmīs sustinērī potest. Corvus pedibus in terrā ambulāre potest. Nīdōs autem nōn in terrā, sed in rāmīs faciunt, quī in altīs arboribus sunt, quō multa animālia ascendere nōn possunt. Pullī nōn ex corvīs ipsīs, sed ex ōvīs eōrum veniunt. Nūlla avis vōcem tam foedam habet quam corvus. Cum enim corvus cantat, ''krra-krra-krra'' audītur.
Etiam vulpēs in terrā ambulāre potest. Nam ea quoque pedēs habet. Numerus pedum est quattuor. Vulpēs nōn est tanta quantus lupus neque tam parva quam mūs. Vulpēs dentibus parva animālia capit et ēst. Ab aliīs bēstiīs timētur, quia improba est. In silvā nēmō amīcus vulpis esse vult neque ūlla bēstia eās amat.
Ecce ... hic corvus in rōstrō frustum cāseī tenet. Cāseus est cibus pāstōrum. Pāstores cāseōs ē lacte ovium faciunt. Lac album est et bibī potest. Cāseus nōn bibī, sed edī potest. Corvus ipse cāseum facere nōn potest, sed eum ā pāstōribus, quī dormiunt, capere potest.\margintext{fasdfa}
Corvus circum oppidum Tūsculum volat, ubi vīllam cum magnō hortō videt. Illīc fenestra aperītur. Corvus per illam fenestram parvum cubiculum videt, in quo ancilla stat. Quae est illa ancilla? Syra est, quae illīc saccōs cibī plenōs numerat. In aliīs saccīs aliī cibī sunt: pīra, māla, panis, cāseus et cētera. Inter illōs saccōs corvus magnum saccum esse videt. Ō quantus est ille saccus! Quid inest?
Etiam Iūlius cubiculum intrat et cāseum abesse videt. Ōstium post sē claudit et īrātus Syram interrogat accūsatque: ''Ubi est cāseus meus? Quis habet cāseum meum? Tūne? Improba ancilla! Mala est ancilla, quae cāseum dominī ēst!'' Dominus eam verberāre vult neque potest; nam baculum eius in ātriō est. Ergō exit ē cubiculō et cum baculō suō revenit. ...
\stoplinenumbering
\stoptext
答案1
你可以使用一些 MetaFun。從覆蓋層中,您可以存取頁面的不同欄位。
回應評論:
水平線如何上升到標題正下方(而垂直線仍與水平線接觸),在文字和行之間留出約 8 毫米的空間。
預設情況下,標題和文字區塊之間的距離為 0pt,並且標題與其欄位中的頂部對齊。可能可以使用一些醜陋的技巧來獲取標頭字段的基線左右,但縮小標頭字段的高度\lineheight
並增加標頭距離要容易得多。設定時headerdistance
也需要設置,footerdistance
因為後者是用前者初始化的。 MetaFun 程式碼只需要很少的調整。
如何使標題填寫在邊距中,而不僅僅是文字寬度?
該\setupheadertexts
命令實際上最多需要五個參數。
\setupheadertexts
[<position>]
[<left odd>] [<right odd>]
[<left even>][<right even>]
因為<position>
您可以選擇margin
將標記放置在頁邊距中。不幸的是,內容對於頁邊距來說太寬了,所以我不得不使用一點\hfill
魔法\llap
。
如何將頁碼放在頁腳的外邊距?現在它是“inright”,但左對齊。
頁碼已經位於外部頁腳中,但您似乎對內部對齊不滿意。您可以使用 來修復對齊方式command
。您沒有指定您想要的對齊方式,所以我只是使用了\centerline
.
你對排版品質的建議似乎破壞了指令的效果
\setupinterlinespace[big]
。
實際上即使沒有對齊也\setupinterlinespace[big]
對我不起作用(參見hz
hanging
沃爾夫岡的評論至於為什麼)。你可以用類似的東西\setupinterlinespace[line=3.8ex]
來代替。
對於頁碼:我有一些程式碼來實現我的目標
這可能有用,但對我來說似乎太複雜了。command
中的方法可以\setuppagenumbering
實現類似的效果並且要短得多。而且也不存在層碰撞的問題。
頁邊空白處的註解必須是「負」縮排。
您提出的定義看起來不錯,但我沒有檢查為什麼它不起作用。相反,我將定義從環境重新轉換為命令並command=\exdent
在\setupmargindata
.
的定義裡面\exdent
有一個\blank[-line]
.這是因為\startnarrower
開始一個新段落,在我們想要刪除的這一點插入一個空白行。
命令
\outerline
不存在。我需要做什麼?
您已經發現了\leftline
,\rightline
因此唯一要做的就是根據您位於左側頁面還是右側頁面在這兩者之間進行切換。這是使用\doifoddpageelse{\rightline}{\leftline}
.
\setuppapersize[A5]
\setuplayout
[% vertical
header=\lineheight,
headerdistance=8mm,
footerdistance=0pt,
% horizontal
backspace=15mm,
width=90mm,
rightmargin=35mm]
\startuseMPgraphic{page}
path outer, text, head, ohead, p, q ;
StartPage ;
outer := Field[Text] [OuterMargin] ;
text := Field[Text] [Text] ;
head := Field[Header] [Text] ;
ohead := Field[Header] [OuterMargin] ;
if OnRightPage :
p := .5[lrcorner text,llcorner outer] -- .5[lrcorner head,llcorner ohead] ;
q := llcorner head -- lrcorner ohead ;
else :
p := .5[lrcorner outer,llcorner text] -- .5[lrcorner ohead,llcorner head] ;
q := llcorner ohead -- lrcorner head ;
fi ;
draw p withcolor \MPcolor{orange} ;
draw q withcolor \MPcolor{orange} ;
StopPage ;
\stopuseMPgraphic
\defineoverlay[page][\useMPgraphic{page}]
\setupbackgrounds[page][background=page]
\setuppagenumbering
[alternative=doublesided,
command=\doifoddpageelse{\rightline}{\leftline},
location={footer,inright}]
\mainlanguage[la]
\language[la]
\setuphyphenation[method=traditional]
\setuptolerance[horizontal,strict] %zorgt voor minder overfull boxes
\setuplinenumbering[step=5, location=inner, align=outer]
\setupindenting[small,yes]
\setupinterlinespace[line=3.8ex]
\setupheadertexts
[text]
[subject][]
[][title]
\setupheadertexts
[margin]
[][\hfill\llap{\getmarking[title]}]
[\rlap{\getmarking[subject]}\hfill][]
\setupheader[style=\bf\cap]
\setuphead
[title]
[textcolor=orange,
textstyle=\bf\cap]
\setuphead
[subject]
[textstyle=\bf\cap]
\starttexdefinition unexpanded exdent #1
\blank[-line] % Remove the newline from the following \startnarrower
\startnarrower[left]
\setupindenting[-\leftskip,yes]
#1
\stopnarrower
\stoptexdefinition
\setupmargindata
[margintext]
[location=outer,
width=\outermarginwidth,
align=inner,
style=small,
command=\exdent]
\usemodule[caesar]
\definefontfeature
[default][default]
[protrusion=quality,
expansion=quality]
\setupbodyfont[11pt]
\setupalign[hz,hanging]
\starttext
\margintext{vulpes}
\starttitle[title={Corvus et Vulpēs}]
\startsubject[title={Apud capitulum X}]
\startlinenumbering
Corvus est avis, quae nōn tanta est\margintext{dhg h hh hhhh fskfa} quanta \margintext{\samplefile{ward}}aquila. Pedēs, cauda, ālae, rōstrum et cētera nigra sunt. Cum per āera volat, ālās movēre necesse est. Cum in arboribus sedet, nōn cadit. Pedibus enim sē rāmīs tenēre potest neque tam crassa est ut puer Rōmānus. Ergō etiam ā tenuibus rāmīs sustinērī potest. Corvus pedibus in terrā ambulāre potest. Nīdōs autem nōn in terrā, sed in rāmīs faciunt, quī in altīs arboribus sunt, quō multa animālia ascendere nōn possunt. Pullī nōn ex corvīs ipsīs, sed ex ōvīs eōrum veniunt. Nūlla avis vōcem tam foedam habet quam corvus. Cum enim corvus cantat, ''krra-krra-krra'' audītur.
Etiam vulpēs in terrā ambulāre potest. Nam ea quoque pedēs habet. Numerus pedum est quattuor. Vulpēs nōn est tanta quantus lupus neque tam parva quam mūs. Vulpēs dentibus parva animālia capit et ēst. Ab aliīs bēstiīs timētur, quia improba est. In silvā nēmō amīcus vulpis esse vult neque ūlla bēstia eās amat.
Ecce \textellipsis\ hic corvus in rōstrō frustum cāseī tenet. Cāseus est cibus pāstōrum. Pāstores cāseōs ē lacte ovium faciunt. Lac album est et bibī potest. Cāseus nōn bibī, sed edī potest. Corvus ipse cāseum facere nōn potest, sed eum ā pāstōribus, quī dormiunt, capere potest.\margintext{fasdfa}
Corvus circum oppidum Tūsculum volat, ubi vīllam cum magnō hortō videt. Illīc fenestra aperītur. Corvus per illam fenestram parvum cubiculum videt, in quo ancilla stat. Quae est illa ancilla? Syra est, quae illīc saccōs cibī plenōs numerat. In aliīs saccīs aliī cibī sunt: pīra, māla, panis, cāseus et cētera. Inter illōs saccōs corvus magnum saccum esse videt. Ō quantus est ille saccus! Quid inest?
Etiam Iūlius cubiculum intrat et cāseum abesse videt. Ōstium post sē claudit et īrātus Syram interrogat accūsatque: \quotation{Ubi est cāseus meus? Quis habet cāseum meum? Tūne? Improba ancilla! Mala est ancilla, quae cāseum dominī ēst!} Dominus eam verberāre vult neque potest; nam baculum eius in ātriō est. Ergō exit ē cubiculō et cum baculō suō revenit. \textellipsis
\stoplinenumbering
\stopsubject
\stoptitle
\stoptext