Bagaimana cara menandai dan melabeli wilayah tertentu di margin dengan ConTeXt?
Saya menulis dokumen yang membahas perbedaan sintaksis antara dua bahasa (katakanlah, TeX dan Markdown). Dengan membahas berbagai topik, beberapa saat teks berbicara tentang satu bahasa dan kemudian tentang bahasa lain.
Yang ingin saya lakukan adalah memberi tanda di margin untuk menunjukkan wilayah mana yang membahas TeX dan mana yang membahas penurunan harga. Sebagai contoh:
Here are some paragraphs \
discussing features | TeX
|
of TeX. /
And the text starting here \
| Markdown
discusses Markdown /
Karena saya memiliki beberapa pasangan wilayah seperti ini, saya ingin membuatnya dengan lingkungan, seperti:
\starttexdiscussion
Here are some paragraphs discussing features
of TeX.
\stoptexdiscussion
\startmarkdowndiscussion
And the text starting here
discusses Markdown
\stopmarkdowndiscussion
Apakah mungkin untuk menentukan lingkungan yang melakukan itu untuk saya? Bagaimana cara menyesuaikan posisi dan panjang konten margin agar sesuai dengan konten utama? Bagaimana cara menangani jeda halaman?
Jawaban
Berikut adalah solusi berdasarkan komentar Henri Menke yang melakukan persis seperti yang dijelaskan, termasuk memisahkan kawat gigi saat jeda halaman ditemukan.
\def\definebraceddiscussion#1[#2]#3[#4]{
\startuseMPgraphic{#2frame}
begingroup;
numeric n ;
pair lr, ur ;
picture p ;
for i=1 upto nofmultipars :
lr := lrcorner multipars[i] ;
ur := urcorner multipars[i] ;
n := arclength(lr -- ur) / 2 ;
p := textext.rt("$\left.\vrule height " & decimal n & "bp width 0pt depth 0pt\right\}$") ;
draw p shifted (.5[lr,ur] + (EmWidth,0));
label.rt("#4", .5[lr,ur] shifted (.75cm, 0)) ;
endfor ;
endgroup;
\stopuseMPgraphic
\definetextbackground[#2Frame]
[mp=#2frame, location=paragraph]
\definestartstop[#2discussion]
[before={\starttextbackground[#2Frame]},
after={\stoptextbackground[#2Frame]}]
}
\definebraceddiscussion[tex][TeX]
\definebraceddiscussion[markdown][Markdown]
\starttext
\starttexdiscussion
\input knuth
\input tufte
\stoptexdiscussion
\startmarkdowndiscussion
\input ward
\input zapf
\stopmarkdowndiscussion
\stoptext