मैं ConTeXt के साथ मार्जिन के कुछ क्षेत्रों को कैसे चिह्नित और लेबल कर सकता हूं?

Aug 17 2020

मैं एक दस्तावेज़ लिखता हूं जो दो भाषाओं के बीच वाक्यविन्यास अंतर पर चर्चा करता है (चलो कहते हैं, टीएक्स और मार्कडाउन)। विभिन्न विषयों से गुजरते हुए, पाठ एक भाषा के बारे में कुछ समय और फिर दूसरी भाषा के बारे में बात करता है।

मैं क्या करना चाहता हूं कि मार्जिन को अंक दिखाने के लिए कि कौन से क्षेत्र टीएक्स पर चर्चा करते हैं और कौन से मार्कडाउन पर चर्चा करते हैं। उदाहरण के लिए:

Here are some paragraphs   \
discussing features        | TeX
                           |
of TeX.                    /

And the text starting here \
                           | Markdown
discusses Markdown         /

चूँकि मेरे पास कुछ क्षेत्र जोड़े हैं, इसलिए मैं उन्हें पर्यावरण के साथ उत्पन्न करना चाहूंगा, जैसे:

\starttexdiscussion
Here are some paragraphs discussing features

of TeX.
\stoptexdiscussion

\startmarkdowndiscussion
And the text starting here

discusses Markdown
\stopmarkdowndiscussion

क्या मेरे लिए ऐसा करने वाले वातावरण को परिभाषित करना संभव है? मैं मुख्य सामग्री से मिलान करने के लिए मार्जिन सामग्री की स्थिति और लंबाई को कैसे समायोजित करूंगा? मैं पृष्ठ विराम कैसे संभाल सकता हूं?

जवाब

1 flyx Aug 19 2020 at 12:27

यहां हेनरी मेन्के की टिप्पणियों पर आधारित एक समाधान है जो वास्तव में वर्णित है, जिसमें पेज ब्रेक का सामना करने पर ब्रेसेस को विभाजित करना शामिल है।

\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