контекст: линия между полем и текстом

контекст: линия между полем и текстом

Я работаю с ConteXt. Здесь, на StackExchange, я нашел код для LateX, который помещает линию между текстом и margin/marginparagraph. Эта линия видна на изображении ниже.

вертикальная линия между полем и текстом После этого я перешел на 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

введите описание изображения здесь

Связанный контент