
德國議會的文件中有四分之一頁碼(例如第 9686 頁 D 表示第 9686 頁的第四季度,(例))。如何在 LaTeX 中建立此類編號,包括目錄中的這些編號?
答案1
這是一個非常有趣的問題。所以我嘗試在我最喜歡的巨集包(即 plain 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 檔案(如果使用 LaTeX,則為 AUX 或 TOC 檔案)。這是透過\setpartpage
巨集來完成的。例如,我們使用OPmac在REF檔案中有以下內容:
%% 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
(頁碼),還列印\partpage
。我透過重新定義來做到這一點
\pglink
,它在 tocline 中用於列印頁碼。這不是很概念性的,因為它們\hyperlinks
在這裡被破壞了,但我們僅將其用作實驗代碼。