This page looks best with JavaScript enabled
基於 XeLaTeX 的中文直書方案
👨 李二狗 · · · 🔢 3283 words· ⏲️ 7 min read · 👀... views
🏷️
  • #layout
  • 半個世紀以來,「橫排」逐漸成爲出版物排版的主流。十年前,境內還能偶爾看到一些出版社以「直排」方式出版一些古籍圖書。目下,僅有境外幾家出版社偶爾還以「直排」方式出版一些文史讀物。前幾日瀏覽素材,看到過去十年間網絡上零零散散的基於 LaTeX 的中文直排方案,逐一分析下來,發覺大都需要完善需求、更新源碼。自己久不讀書,讀「直排」書的機會就更少了。近來因飲酒吹風而感冒閉門,趁着這般光景,嘗試整理出一份基於 XeLaTeX 與 XeCJK 的中文直書方案。

    直排與現代排版需求

    爲了更好吸納西學現代科學,方便排版公式、符號、插圖等頁面元素,變「直書」爲「橫書」實乃大勢所趨。一百年來,經過時間與實踐檢驗,這個問題早已有了的明確答案。

    本文並不爭論漢字「直書」與「橫書」之間的優劣問題。

    大多數傳統直排古籍出版物並無繁複的章節目錄、插圖、註釋、頁眉頁腳、索引項目、文獻徵引等現代排版需求(或者即使有,迫於當時的排版手段,難以實現,便放棄了)。現在,我們開歷史的倒車,以「直書」方式排版一些出版物,便不可避免地要回應以上現代排版需求。

    • **章節目錄信息:**傳統直排書籍皆可滿足此類需求,但詳細的目錄排版顯得較爲吃力,可從若干直排書籍的目錄處理感知到這一問題(如中華書局 1993 年 4 月所出錢基博《中國文學史》一書的目錄排版)。
    • **頁眉頁腳信息:**這個需求的處理並不複雜,傳統直排書籍亦大都能簡單呈現,但大都只顯示到卷(編)目,個別圖書可以顯示到章目層次,對更深層次的節、子節信息則難以呈現(如中華書局 1993 年 4 月所出錢基博《中國文學史》一書的頁眉頁腳信息排版)。
    • **章節註釋信息:**鑑於直排頁面的特徵,橫排頁面的腳註方式並不適宜用於直排頁面(只能放一些簡短的註釋,如《十三經注疏》整理本系列之《儀禮注疏》第一〇二七頁的腳註),宜變腳註爲夾註(割註)或章節末註(如民 70 年聯經出版事業公司印行劉若愚所著《中國文學理論》一書,原註與譯註皆排在章節之後)。
    • **索引項目信息:**傳統直排書籍附帶索引的不多,即便製作了索引,排版起來亦頗顯繁瑣(如《中文大辭典》附錄所示,不難推測其附錄製作、排版工程之浩大);有些直排的學術著作,如劉若愚《中國文學理論》一書的索引部分則乾脆改爲橫排版。
    • **文獻徵引信息:**現代圖書常常附有翔實的 Bibliography 信息,對圖書正文參考、引用的各類文獻予以呈現,這是當代直排方案不可回避的需求;有些直排的學術著作,如劉若愚《中國文學理論》一書的參考文獻部分則直接改爲橫排版。
    • **正文插圖與中英文混排信息:**雖然一些直排的日文漢和辭典或國語辭典也能大量處理插圖與拉丁字母,但這方面總歸是直排方式的欠缺之處,若有大量拉丁文字的篇幅或大量的插圖,則全書不宜直排;如劉若愚《中國文學理論》一書正文穿插大量的英文引文,與直排的漢文排在一起,除了可以協助治療讀者的頸椎病,版式讀起來並不友好,所以此後的版本大都改爲橫排版。

    XeCJK 直書設置

    在 XeCJK 中直書需要旋轉 PDF,並且原橫排環境中的樣式皆需調整以適應直排版式。以下爲需要調整的若干樣式。

    總設置

    1
    2
    3
    4
    5
    6
    7
    
    %文檔類型加入landscape選項
    \documentclass[a4paper,12pt,openany,landscape]{book}
    %導入XeCJK Package
    \usepackage[CJKchecksingle,AutoFallBack=true]{xeCJK}
    %設定直排字體
    \setCJKmainfont[Script=CJK,Vertical=RotatedGlyphs,RawFeature={vertical:+vert},BoldFont=H-SiuNiu-Bold,ItalicFont=HGBLight-H]{I.MingCP}
    \defaultCJKfontfeatures{RawFeature={vertical:+vert}}
    

    調正漢字基線

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    %漢字基線調整適應中英文混排
    \let\CJKsymbolOrig\CJKsymbol
    \let\CJKpunctsymbolOrig\CJKpunctsymbol
    \newcommand*\CJKmovesymbol[1]{\raise.35em\hbox{\CJKsymbolOrig{#1}}}
    \newcommand*\CJKmovepunctsymbol[1]{\raise.35em\hbox{\CJKpunctsymbolOrig{#1}}}
    \newcommand*\CJKmove{\punctstyle{plain}
    	\let\CJKsymbol\CJKmovesymbol
    	\let\CJKpunctsymbol\CJKmovepunctsymbol}	
    %在\begin{document}後添加\CJKmove
    \begin{document}
    \CJKmove
    

    目錄中的章節樣式

    1
    2
    3
    4
    5
    6
    7
    
    \titlecontents{chapter}[0em]{\addvspace{5pt}\fontsizec{0.7cm}\it}     % for  Chinese table of contents
    {\rotatebox[origin=cc]{-270}{\ncircbs{\thecontentslabel}}~}
    {\rotatebox[origin=cc]{-270}{\Alphcircwcu{21}}~\thecontentslabel\helfont}{\fontsizec{0.7cm}\color{black}\;\titlerule*[.5pc]{.}\;\zhnumsetup{style={Traditional,Financial}}\zhdigits{\thecontentspage}}
    
    \titlecontents{section}[0cm]{\it}
    {{\thecontentslabel}節~~~}
    {\rotatebox[origin=cc]{-270}{\Alphcircwcu{21}}~\thecontentslabel\helfont}{\titlerule*[.5pc]{.}\;\color{black}\zhnumsetup{style={Traditional,Financial}}\zhdigits{\thecontentspage}}
    

    目錄版式效果

    正文中的章節樣式

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    %%竖排章样式
    \assignpagestyle{\chapter}{empty}%去掉章页面页码
    \assignpagestyle{\chapter*}{empty}%去掉章页面页码
    \newcommand{\mychapter}[1]{%
    	\color{myred}\HGBM\fontsize{37}{37}第~\rotatebox[x=0.715cm,origin=c]{-270}{\ncircbs{\thechapter}}~章{{\ZSKS·}#1}
    }
    \newcommand{\mychapterun}[1]{%
    	\color{myred}\fontsize{37}{37}\ding{109}~\akzfont\HGBM #1
    }
    \titleformat{\chapter}{}{}{0em}{\mychapter}% code preceding the title body  (title body is taken as argument)
    \titleformat{name=\chapter,numberless}{}{}{0pt}{\mychapterun}
    \titlespacing{\chapter}
    {0pt}{0pt}{36pt}
    %%竖排節样式
    \newcommand{\mysection}[1]{%
    			\color{myred}\MLan \fontsize{21}{21}第~{\thesection}~節~~~~ #1
    }
    \newcommand{\mysectionun}[1]{%
    			\color{myred}\fontsize{21}{21}\ding{109}~\akzfont\MLan #1
    }
    \titleformat{\section}{}{}{0mm}{\mysection}
    \titleformat{name=\section,numberless}{}{}{0pt}{\mysectionun}
    \titlespacing{\section}
    {0pt}{12pt}{6pt}
    

    正文章節標題樣式

    插圖樣式設定

    直排時,插圖不易調整,尤其是插圖的標題樣式。本文方案暫且處理如下。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    \usepackage{wrapfig}
    \usepackage{caption}
    \captionsetup[wrapfigure]{font=small,labelfont=bf,textfont=it,aboveskip=6pt,belowskip=-1.02em,justification=raggedright,name={Fig.}}%,labelsep=period
    \newcommand{\mafig}[2]{
    	\begin{wrapfigure}{O}[0pt]{0.2\textwidth}%[10]
    		\vspace{-6pt}
    	{\tcbincludegraphics[size=fbox,colframe=myred!50!black,colback=red!60!black,center title,drop fuzzy shadow,colback=myred,boxsep=3pt,arc=0pt,graphics options={scale=.5,angle=-270},title={\large\HGBR\helfont #2}]{#1}}
    		\vspace{-6pt}
    \end{wrapfigure}
    }
    

    參考文獻設定

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
    %採用gb7714-2015格式
    \usepackage[backend = biber,bibstyle = gb7714-2015,citestyle=gb7714-2015ay,natbib=true,mcite=true,sorting=nyt,sortcites=true,autopunct=true,hyperref=true,abbreviate=false,backref=true]{biblatex}%國標2015文獻引用格式 %bibstyle = gb7714-2015,citestyle=gb7714-2015ay,bibstyle=alphabetic,%=gb7714-2015ay为(作者年份页码)样式引用
    \addbibresource{bibliography.bib} % BibTeX bibliography file bibliography.bib
    \defbibheading{bibempty}{}
    \DefineBibliographyStrings{english}{%
    	backrefpage = {引用頁:},
    	backrefpages= {引用頁:},
    }
    
    %正文行文示例
    ……\cite[P178]{adornoRethinkingArchitectureReader1997}\textcite[P352]{haidegeerHeErDeLinShiDeChanShi2000}認爲……
    
    %正文列印參考文獻
    \printbibliography[heading=bibempty]
    

    參考文獻直排樣式

    割註樣式設置

    1
    2
    3
    4
    5
    6
    7
    8
    
    %%%gezhu environment
    \usepackage{zhulem}
    \usepackage{gezhu}
    \setgezhuraise{-3.5pt}
    \setgezhulines{2}
    \everygezhu{\linespread{1.2}\fontsize{9}{9}\HMOP\selectfont}
    \newcommand{\gz}[1]{{\gezhu{#1}}}
    %\newcommand{\gz}[1]{\disablepinyin\gezhu{\HMOP #1}\enablepinyin}
    

    行間夾批樣式效果

    頁眉頁腳樣式

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    
    \usepackage{titleps} %詳細參見說明文檔
    
    \newpagestyle{mapage}{%   %numbered chapter
    	\sethead[\MLan\color{myred}\bottitlemarks{第{\thesection}節}~~~\sectiontitle]
    	 []
    	 [{\MLan\color{myred}\rotatebox[x=0.225cm,origin=c]{-270}{\ncircbs{\thechapter}}~\chaptertitle《~\parttitle 編《~\thebooktitle《~第{\HGBM\color{black}\zhnumsetup{style={Traditional,Financial}}\zhdigits{\thepage}}}] %even head
    	 {}
    	 {}
    	 {} %odd head
    	 \setfoot[]
    	 []
    	 [] %even foot
    	 {\MLan\color{myred}\bottitlemarks{{\thesection}}~~~\sectiontitle}
    	 {}
    	 {{\MLan\color{myred}\rotatebox[x=0.225cm,origin=c]{-270}{\ncircbs{\thechapter}}~\chaptertitle《~\parttitle 編《~\thebooktitle《~第{\HGBM\color{black}\zhnumsetup{style={Traditional,Financial}}\zhdigits{\thepage}}}} %odd foot
    				}
    	\settitlemarks{part,chapter,section,subsection,subsubsection}
    

    頁眉頁腳直排樣式

    章節尾註樣式

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    \usepackage[page]{pagenote}%[page] Because of how TeX writes information to files, when the page option is used there must be no notes on the page where \printnotes or \printnotes* closes the ent file. If necessary, a \clearpage or similar must be used before the \print (標記注釋所在頁碼必須讓printnotes另起一頁,否則可能吃掉與\printnotes同頁的注釋^_^)
    
    % 正文中的注释编号样式调整:圓圈數字
    \renewcommand\notenumintext[1]{\rotatebox[origin=cc]{-270}{\textsuperscript{\footnotesize\ncircrds{#1}}}}
    % 章节末尾的注释编号样式调整:方形黑底數字
    \renewcommand\notenuminnotes[1]{\rotatebox[origin=cc]{-270}{\ncircbs{#1}}}
    %尾註標記該註釋在正文出現的頁碼
    \renewcommand{\pagename}{{P.}}
    
    \makepagenote	
    

    註釋採用章末尾註

    索引样式設定

    直排模式的索引與橫排並無多少區別,參考本站 Zhmakeindex and the Indices Creating of Chinese Books 一文即可。效果見下圖:

    直排索引樣式

    復原古籍印版樣式

    使用一些電子化的古籍印刷字體,如康熙字典體(《康熙字典》印刷所用字型)、聚珍仿宋(北宋刊本中的字型)、浙江民間書刻體之類,可以復原古籍原典部分印刷效果。下面兩副圖即大致以聚珍仿宋排版的圖書與電子化重排效果示意。

    世界書局《駢體文鈔》版式
    仿世界書局版

    這類字體近年來越來越多,許多沈睡在古籍中的字形得以重見天日。尤以日本欣喜堂的工作最爲出色。

    結語

    上文簡單展示了以 XeCJK 與 XeLaTeX 製作中文直排版式的方案。此外,尚有基於 upLaTeX 以及較新的 Asiatic pTeX 的直排方案,可資參考。

    The article was recently updated on Sunday, March 15, 2020, 18:49:47 by 王小花.


    李二狗
    Donation支持作者