컨텍스트: 여백과 텍스트 사이의 선

컨텍스트: 여백과 텍스트 사이의 선

저는 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을 사용할 수 있습니다. 오버레이 내에서 페이지의 다양한 필드에 액세스할 수 있습니다.

의견에 대한 응답:

텍스트와 줄 사이에 약 8mm의 공간을 만들어 수평선이 헤더 바로 아래로 올라가는 동안(수직선은 여전히 ​​수평 선에 닿아 있음) 어떻게 할 수 있습니까?

기본적으로 헤더와 텍스트 블록 사이의 거리는 0pt이고 헤더는 해당 필드의 상단에 정렬됩니다. 헤더 필드의 기준선을 얻기 위해 몇 가지 추악한 해킹을 사용하는 것이 가능할 수도 있지만 헤더 필드의 높이를 줄이고 \lineheight헤더 거리를 늘리는 것이 훨씬 쉽습니다. 설정 시 후자가 전자로 초기화되므로 headerdistance설정도 필요합니다 . footerdistanceMetaFun 코드는 약간의 조정만 필요합니다.

텍스트 너비뿐만 아니라 여백에도 머리글을 채우려면 어떻게 해야 합니까?

\setupheadertexts명령은 실제로 최대 5개의 인수를 사용합니다.

\setupheadertexts
   [<position>]
   [<left odd>] [<right odd>]
   [<left even>][<right even>]

여백에 표시를 배치하도록 <position>선택할 수 있습니다 . 안타깝게도 여백에 비해 내용이 너무 넓어서 약간 의 마법을 margin사용해야 합니다 .\hfill\llap

바닥글의 페이지 번호를 바깥 여백에 어떻게 넣나요? 이제는 'inright'이지만 왼쪽 정렬됩니다.

페이지 번호는 이미 바깥쪽 바닥글에 있지만 안쪽 정렬이 마음에 들지 않는 것 같습니다. 를 사용하여 정렬을 수정할 수 있습니다 command. 원하는 정렬을 지정하지 않았으므로 방금 \centerline.

조판 품질에 대한 귀하의 제안은 명령의 효과를 파괴하는 것 같습니다 \setupinterlinespace[big].

실제로 정렬 이나 정렬 \setupinterlinespace[big]없이도 작동하지 않습니다 (참조hzhanging볼프강의 코멘트왜인지에 관해서). 대신에 다음과 같은 것을 사용할 수 있습니다 \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

여기에 이미지 설명을 입력하세요

관련 정보