Нумерация страниц по кварталам

Нумерация страниц по кварталам

В документах немецкого парламента используются квартальные номера страниц (например, страница 9686 D для четвертого квартала страницы 9686,(пример)). Как создать такую ​​нумерацию в LaTeX, включив эту нумерацию в оглавление?

решение1

Это очень интересная проблема. Поэтому я попытался решить ее в моем любимом пакете макросов, т.е. простом TeX. Вы можете вдохновиться этим и вы (или кто-то другой) можете попробовать повторно реализовать эти идеи в LaTeX.

Нам нужно задать \outputпроцедуру для выполнения указанного дизайна страницы. Я этого не сделал (ради простоты и по той причине, что простой TeX не является желаемым пакетом макросов). Я только задал одну страницу «вручную», используя определенный \dopageмакрос для экспериментов. Но основные принципы показаны здесь.

\input opmac

\def\lorem{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
  libero, nonummy eget, consectetuer id, vulputate a, magna. Donec 
  vehicula augue eu neque. Pellentesque habitant morbi tristique   
  senectus et netus et malesuada fames ac turpis egestas. Mauris ut
  leo.}

\splittopskip=12pt  
\long\def\dopage#1{%
   \setbox0=\vbox{\hsize=7cm \emergencystretch=2em \penalty0
                  #1\par\nobreak\vfil\penalty0}
   \setbox1=\vsplit0 to0pt
   \hbox{\vbox to240pt{\hbox{(A)}\vfil\hbox{(B)}\vfil}\kern5pt
      \vbox{\setpartpage{A}%
            \setbox1=\vsplit0 to 120pt
            \edef\tmp{\the\dp1}\box1 \kern-\tmp
            \setpartpage{B}%  
            \vsplit0 to120pt}%
      \kern5pt\vrule\kern5pt
      \vbox{\setpartpage{C}%
            \setbox1=\vsplit0 to 120pt
            \edef\tmp{\the\dp1}\box1 \kern-\tmp
            \setpartpage{D}%  
            \vsplit0 to120pt}%
    \kern5pt\vbox to240pt{\hbox{(C)}\vfil\hbox{(D)}\vfil}}
}
\def\setpartpage#1{\wref\addto{\noexpand\toclist{\def\noexpand\partpage{#1}}}}
\def\pglink#1{#1 \partpage}

\maketoc 
\vskip1cm

\dopage{
  \sec First item

  \lorem

  \sec Second item

  \lorem \par \lorem

  \sec Third item 

  \lorem
}
\bye

Результат:

четверть страницы

Объяснение: Нам нужно разбить \vsplitсодержимое страницы на четыре части, первые две будут первым столбцом, а вторые две — вторым столбцом. Затем нам нужно \writeдобавить в файл REF (или файл AUX или TOC, если используется LaTeX) информацию о части страницы перед каждой частью. Это делается макросом \setpartpage. Например, у нас есть следующее содержимое в файле REF с использованием OPmac:

 %% OPmac - REF file
\Xpage{1}
\addto\toclist {\def \partpage {A}}
\Xtoc{1}{\rm }{1}{First item }{1}
\addto\toclist {\def \partpage {B}}
\Xtoc{1}{\rm }{2}{Second item }{1}
\addto\toclist {\def \partpage {C}}
\addto\toclist {\def \partpage {D}}
\Xtoc{1}{\rm }{3}{Third item }{1}

Это означает, что \toclistпосле прочтения файла REF будет включено:

\def\partpage {A}
\tocline{1}{\rm}{1}{First item }{1} % {level}{font}{sec number}{text}{page}
\def\partpage {B}
\tocline{1}{\rm}{2}{Second item }{1}
\def\partpage {C}
\def\partpage {D}
\tocline{1}{\rm}{3}{Third item }{1}

Теперь нам нужно только переопределить \tocline, чтобы он печатал не только #5(pageno), но и \partpageтоже. Я сделал это, переопределив, \pglinkкоторый используется в tocline для печати номера страницы. Это не очень концептуально, потому что \hyperlinksздесь сломаны, но мы используем это только как экспериментальный код.

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