巴萨赫塔菲国王杯:LaTeX技巧901:馴化LaTeX頁面布局

通常,這些參數由宏包或模板(由出版商提供)命令設置。然而,當你需要更好地控制類型比較特殊的文檔時,你可能想知道“幕后”是怎么回事。

引言

巴萨vs赫塔菲全场录像 www.vsttod.com.cn 當使用LaTeX進行書刊版面設計(book layout)時,即紙張大?。╬aper size)、頁面大?。╞ook page size,即裝訂后的實際尺寸)和頁邊距(margins),你是否感到非常吃力?即使有宏包協助,比如出色的geometry宏包,此事也相當麻煩。當出版物的左手頁(left-hand  page)和右手頁(right-hand page)的頁邊空白不同時,(La)TeX要用上一打(a dozen)值來確定布局:

\hoffset, \voffset, \oddsidemargin, \topmargin, \headheight, \headsep, \textheight,

\textwidth, \marginparsep, \marginparwidth, \footskip

我們的目標是什么?

本文主題以及我們提供相關資源的目的: 1.實現某種布局規范,比如來自書刊設計師或不支持LaTeX的出版商,或者遵循特定的印刷規范。 2.把設計規范中傳統書刊的規格(紙張大小,實際尺寸和頁邊空邊)轉換成LaTeX參數以實現設計師的布局需求。 3.使頁面在紙張的垂直方向和水平方向均居中,即LaTeX所生成PDF頁面的中心。想要選擇任意的紙張大小,而非受限于標準(A4, US Letter等)。 在本文,我們將探討LaTeX頁面模型與設計印刷業所用傳統模型之間的關系。通過一組谷歌幻燈片(包含詳細的頁面布局圖),我們逐步展示了如何建立一些簡單方程,使之能夠表示LaTeX布局模型與書刊設計師或印刷公司的傳統規格之間的關系。 借助那些方程,如果不覺得麻煩的話,你可以手動算出各個LaTeX參數的值,就得到了你想要的書刊布局。當然,你還有別的選擇,那就是使用我們基于LaTeX的book.cls開發的新模板——LuaLaTeX-based template,它能夠利用那些方程提供可視化的頁面向導 和標尺,幫助你預覽版芯(text area)和頁邊距。 在使用Overleaf模板時,你可以通過預覽功能,快速決定出你更喜歡哪一種書籍尺寸(book sizes ),然后再嘗試頁邊距的設置。此外,Overleaf 模板還能顯示文本邊界(text boundary),它由\marginparsep和\marginparwidth(非0值)2個命令控制。

快速提示:如何設置紙張大?。╬aper size)?

LuaTeX、XeTeX和pdfTeX都提供了如下2個命令,用以控制生成PDF文檔的紙張大小。\pdfpagewidth \pdfpageheight 現已知道這2個命令表示紙張大小,我們可以通過一幅圖解說明我們要做什么:注意:ΔX和ΔY控制頁面( book page)的位置,使之位于紙面(paper area)中心,詳情參見谷歌幻燈片。從圖解可以看出: ΔX=1/2 (\pdfpagewidth  -  book-page-width) ΔY=1/2 (\pdfpageheight  -  book-page-height) 上圖也在谷歌幻燈片里,要想建立頁面布局方程,必須從它開始。

題外話:LuaTeX

LuaTeX是一個非常強大而靈活的TeX引擎,故而我們選擇用它來運行Overleaf 模板。當前(本文寫作之際),Overleaf使用了(通過TeX Live)LuaTeX  v0.95,它包含發布初期對核心引擎所做的改動。資深讀者可能知道,那些改動影響到生成PDF文件的控制命令。嚴格來說,LuaTeX不再直接支持\pdfpagewidth或\ pdfpageheight,而今采用2個\pagewidth和\pageheight 原語,通過\let\pdfpagewidth\pagewidth 和\let\pdfpageheight\pageheight實現向后兼容。感興趣的讀者,如果想了解更多,請參見LaTeX News, Issue 24, February 2016(https://www.latex-project.org/news/latex2e-news/ltnews24.pdf) 以及 the official LuaTeX documentation(//www.luatex.org/documentation.html)。

本文相關資源

在Overleaf上,我們喜歡嘗試新想法,于是此處加入一些對你可能有益的資源:

  • 兩組谷歌幻燈片:其內容相同,只是一個帶動畫而另一個不帶(有些人更喜歡不帶任何動畫的幻燈片)。你還可以下載PDF格式的幻燈片。它們非常簡明地介紹了書籍頁面布局的基礎知識,探討了LaTeX的頁面模型與傳統設計印刷模型的關系。最后幾幀幻燈片展示了如何建立簡單方程,好把傳統規格(頁面寬度/高度和頁邊距)轉換成意義等同的LaTeX參數值,從而在LaTeX中得到你的書籍布局。

  • LaTeX模板:我們想隨本文發布一個新模板,它基于LaTeX的cls而來,由LuaTeX引擎運行,并且能夠在頁面上顯示可視化向導 和標尺,幫助你實現想要的布局。如果有足夠的興趣,倘若時間允許,我們會發布新版。

  • 頁面布局圖解:谷歌幻燈片中有詳細的頁面布局圖,通過它可以建立方程,從而得到各個LaTeX參數的值。如果你想進行深入的研究,我們有高分辨率的(矢量)PDF版幻燈片供你下載。

如何使用本文資源

本文的讀者們可能有豐富的使用經驗,所以我們提供了一系列資源,大家可以根據各自情況進行選擇。我們期望這些資源是有用的,能夠滿足Overleaf上LaTeX社區的需要。 這些資源沒有定義先后次序,但是我們建議這樣使用: 1.觀看谷歌幻燈片; 2.(可?。┫略夭⒀芯懇趁娌季滯?; 3.嘗試LaTeX模板。 目前LuaTeX的應用不如其他TeX引擎(pdfTeX和xetex所)廣泛,我們了解這個現狀,所以在設計Overleaf模板時,采用了這樣的方法,即每當你成功地排版了一篇文檔,它都能生成一個文本文件(mypagesetup.tex)。mypagesetup.tex文件中 有關于頁面布局的所有LaTeX參數的設置。你可以下載Overleaf 模板的ZIP文件,提取出mypagesetup.tex,然后把它包含進另一個項目,這樣一來,使用pdfLaTeX或XeLaTeX也可以得到與LuaTeX相同的頁面布局。這里是 pdfLaTeX/XeLaTeX和LuaLaTeX的例子。(文內鏈接)

步驟1:觀看或下載(PDF格式)谷歌幻燈片

最后一幀幻燈片(如下圖所示)匯集了演示過程中呈現的方程。為了方便讀者,我們提供了3種觀看幻燈片的方式: 1.帶動畫的幻燈片; 2.無動畫的幻燈片; 3.可脫機觀看或打印的PDF格式幻燈片。

步驟2(可?。合略夭⒀芯懇趁娌季滯?/h4>

如果你想更詳細地了解頁面布局圖,本文結尾處給出了下載PDF版谷歌幻燈片的鏈接,那里有雙頁(面向頁面)版的。

步驟3:嘗試LaTeX模板

此模板非常容易上手,你需要熟悉6個命令(如下)。如果使用模板,你就不需要觀看幻燈片或著查看頁面布局圖。希望或者需要更深入地了解布局方程的讀者,可以去查看幻燈片,其他人直接使用模板即可。你不用理解方程本身或去關心其中細節,因為它們會由模板代碼實現。

Overleaf模板:它是做什么的?

總的來說,它提供以下功能:

  • 通過紙張寬度/高度、頁面寬度/高度和4個頁邊距(頂部,底部,內部和外部)定義頁面布局;

  • 用你輸入的規則計算相應的LaTeX參數值,實現你想要的頁面布局;

  • 所有LaTeX參數的設置都保存在tex文件中,可通過下載模板項目得到;

  • 在排版頁面上顯示向導和標尺(刻度標記為mm(毫米)),提供可視化反饋,允許實時預覽布局效果,即快速查看頁面寬度/高度、文本寬度/高度和各個頁邊距。

請注意,模板的目的并非要生成你的實際書籍,它旨在:

  • 提供一個可視化工具,方便你對頁面尺寸和頁邊距進行各種嘗試性設置,這種允許不斷嘗試且能夠實時預覽的功能幫助你快速決定更喜歡哪個;

  • 生成tex文件,方便你留作己用。

下面的截圖展示了模板如何為頁面添加標尺和邊界。請注意,如果你為\marginparwidth設置了非0值,頁邊空白就會顯示出來。

頁面布局參數和方程

如果看過谷歌幻燈片中的方程,你會發現里面有許多變量。顯然,使用方程的方式也變得很多,這取決于哪些參數你想通過方程計算而哪些你要自己設置。我們來看谷歌幻燈片中的一幅圖解(和相應的方程): 很顯然,你需要決定計算哪些參數,以及要設置哪些參數。我們為Overleaf模板選擇的方式如下: 1.我們把\hoffset和\voffset設置為0。 2.你來輸入以下控制頁面寬度的LaTeX參數值:

\marginparsep

\marginparwidth

3.你再來輸入以下控制頁面高度的LaTeX參數值:

\headheight

\headsep

\footskip

4.你還需要輸入紙張大小、頁面寬度和高度以及4個頁邊距的值。注意:所有值必須以mm(毫米)為單位。 5.Overleaf template 模板會自動計算下列LaTeX參數的值以實現頁面布局(以你選擇的紙張大小為中心):

\evensidemargin, \oddsidemargin, \textwidth, \textheightand \topmargin

6.模板把所有參數值(包括用戶提供的以及模板計算的)寫進mypagesetup.tex文件中,如圖所示:

\pdfpagewidth=250mm

\pdfpageheight=350mm

\setlength{\hoffset}{0mm}

\setlength{\voffset}{0mm}

\setlength{\evensidemargin}{65.6mm}

\setlength{\oddsidemargin}{44.6mm}

\setlength{\headheight}{18mm}

\setlength{\headsep}{5mm}

\setlength{\footskip}{10mm}

\setlength{\topmargin}{29.6mm}

\setlength{\textwidth}{89mm}

\setlength{\textheight}{200mm}

\setlength{\marginparsep}{3mm}

\setlength{\marginparwidth}{25mm}

7.模板提供了\showvisuals命令,用來顯示可視化向導 ,它可以幫助你查看頁面布局;\showvalues命令可以列出當前mypagesetup.tex文件的內容;\showhelp命令則用來簡要地排列模板命令及其描述。

如何使用Overleaf模板

你需要用到3個簡單的命令,其輸入值的單位為mm(毫米)。另外2個命令(\showvisuals和\showvalues)為你提供布局預覽功能?;褂?個\showhelp命令用來調出一些簡要的文檔資料。

模板命令及其參數

對于每個命令,我們會指出它是[可選的]或[必需的]。如果是[必需的],你就要設置所有受命令控制的參數值,否則模板無法完成布局計算。 1.\setmarginpars#1#2[optional] 此命令用于設置\marginparsep 和\marginparwidth的值。除非要創建頁邊空白,一般情況你用不到這個命令。\marginparsep 和\marginparwidth的默認值為0。注意,只有當\marginparwidth不為0時,頁邊空白的邊界才能通過\showvisuals顯示出來。

#1=value for \marginparsep (in mm)
#2=value for \marginparwidth (in mm)

Example: \setmarginpars{5}{20}

2.\setheadfoot#1#2#3[required] 此命令用于設置3個LaTeX參數值,它們是計算其余參數值之必需。

#1=value for headheight (in mm) 
#2=value for headsep in mm (in mm)
#3=value for footskip in mm (in mm)

Example: \setheadfoot{18}{5}{10}

3.\setpage#1...#8[required] 此命令最為重要,你需要用它輸入所有決定布局效果的關鍵尺寸。不過,這個命令只有在你使用了[optional]\setmarginpars和[required]\setheadfoot之后才能用。

#1=value for paper width (in mm)
#2=value for paper height (in mm) 
#3=value for book page width (in mm) 
#4=value for book page height(in mm), 
#5=value for book outer margin (in mm) 
#6=value for book inner margin (in mm)
#7=value for book top margin (in mm)
#8=value for book bottom margin (in mm)

Example: \setpage{250}{350}{160}{250}{18}{25}{5}{12}

4.\showvisuals[optional] 此命令不帶任何參數。它用于開啟顯示可視化標尺和向導功能,以幫助你查看頁面布局。要關閉該功能,把命令注釋掉即可。

\showvisuals %all elements are displayed

To switch it off just comment it out: 

%\showvisuals

5.\showvalues[optional] 此命令不帶任何參數。它列出mypagesetup.tex文件的內容,即實現頁面布局的LaTeX代碼,這是另一種查看頁面布局的方法。要關閉該功能,把命令注釋掉即可。

\showvalues %Lists the content of "mypagesetup.tex"

To switch it off just comment it out: 

%\showvalues

6.\showhelp[optional] 該命令不帶任何參數。它簡要地列出了模板命令及其描述。

\showhelp %Typeset some brief documentation

To switch it off just comment it out: 

%\showhelp

最小操作實例

下面是一個關于Overleaf模板項目的簡單實例:

\documentclass[twoside]{book} % You need to use this...
\usepackage{pagevisuals}% Overleaf's template
\usepackage{fancyhdr} % To add some headers/footers
\usepackage{lipsum} % For generating some sample text
\setmarginpars{5}{25} 
\setheadfoot{10}{5}{10}
\setpage{250}{320}{160}{250}{15}{18}{10}{20}
%-------------------------------------------------------
\begin{document}
\showvalues
\showvisuals
\showhelp
% Simple example using fancyhdr.sty
\fancyhead[LE]{{\fontsize{12}{12}\selectfont\thepage}}
\fancyhead[RE]{\textsc{text for left-hand pages}}
\fancyhead[LO]{\textsc{Text for right-hand pages}}
\fancyhead[RO]{{\fontsize{12}{12}\selectfont\thepage}}
\pagestyle{fancy}
\lipsum[1-10]%using lipsum.sty to generate some sample text
\end{document}

如何下載并使用mypagesetup.tex

如上所述,每當你成功地排版一篇文檔,模板會生成一個mypagesetup.tex文件,里面包含所有設置頁面布局的LaTeX命令。下面的截圖給出了一個典型的mypagesetup.tex文件,通過模板命令\showvalues,可以在文檔中把它顯示出來。如果你想在別的項目中也使用mypagesetup.tex文件中的布局設置,那么按照以下指示去做(注意步驟3中對LuaLaTeX的具體說明): 第1步:下載模板項目的ZIP文件,注意,確保你選擇了“Input and Output Files”選項:步驟2:用ZIP工具/軟件解壓,提取mypagesetup.tex文件,使用時把它上傳到你的Overleaf項目中。 步驟3(對pdfLaTeX或XeLaTeX):把它包含進主文件,譬說在\begin{document}之前(導言區)加入\input  mypagesetup.tex 命令。舉例來講,一個最小的pdfLaTeX 或XeLaTeX項目可能如下所示,注意命令 \documentclass[twoside]{book} :

\documentclass[twoside]{book}\usepackage[utf8]{inputenc} % Remove this line if you use XeLaTeX\usepackage{lipsum} % Package to generate text for testing\input mypagesetup.tex\begin{document}\lipsum[1-50] % Text for testing. You can, of course, delete this\end{document}\documentclass[twoside]{book}
\usepackage[utf8]{inputenc} % Remove this line if you use XeLaTeX
\usepackage{lipsum} % Package to generate text for testing
\input mypagesetup.tex
\begin{document}
\lipsum[1-50] % Text for testing. You can, of course, delete this
\end{document}

步驟3(對LuaLaTeX):前面提到(題外話:LuaTeX),LuaTeX引擎的開發者改動了它的原語,這意味著LuaTeX不支持直接使用\pdfpagewidth 和\pdfpageheight 設置 PDF文檔頁面大小。為了能夠使用LuaLaTeX,你需要在\input mypagesetup.tex 之前添加\let\pdfpagewidth\pagewidth 和 \let\pdfpageheight\pageheight-again 這2個命令。再次提醒,注意命令\documentclass[twoside]{book} 的使用。

\documentclass[twoside]{book}
\usepackage{lipsum} % Package to generate text for testing
\let\pdfpagewidth\pagewidth \let\pdfpageheight\pageheight %only needed for LuaLaTeX
\input mypagesetup.tex
\begin{document}
\lipsum[1-50] % Text for testing. You can, of course, delete this
\end{document}

文章資源

這里我們列出了一些資源,以幫助你更好地理解LaTeX的布局參數。谷歌幻燈片里有這些方程的詳細介紹,你可以自己算出滿足任意文檔要求的參數值。

Overleaf LaTeX 模板

我們發布的LaTeX模板,能夠利用文中討論的方程提供可視化向導和標尺,幫助你預覽版芯和頁邊空白。

谷歌幻燈片:帶動畫

谷歌幻燈片:無動畫

谷歌幻燈片:轉換為PDF

如果你希望觀看PDF格式的幻燈片,或者想把它們打印出來,你可以下載PDF文件。

下載頁面布局圖

如果你想更詳細地研究頁面布局圖,這里有PDF格式的雙頁(即面向頁面)文檔。

結束語

我們希望本文對你有用,之所以提供這些有趣的想法和解決方案,為的是探索使用LaTeX設置頁面布局。一如既往地,我們非常樂意聆聽讀者的心聲,所以請通過評論和回復聯系我們。 Happy (La)TeXing! 選自:https://www.overleaf.com/latex/templates/overleaf-template-to-visualize-the-layout-of-a-book-prepared-with-slash-documentclass-twoside-%7Bbook%7D/qgtvptpkffcw#.WkdafFOOxOU

分享到:
未經允許不得轉載:LaTeX技巧901:馴化LaTeX頁面布局
已有 條意見

    最新文章

    加載中...
      本站提供專業LaTeX排版、咨詢、定制服務,請點擊下圖咨詢詳情


      全國首個精品的LaTeX視頻教程,大牛帶著你入門,讓LaTeX學習不再糾結,請點擊下圖咨詢詳情

      熱門評論

        聯系我們

        交流QQ群:91940767
        本站QQ號:343083553
        郵箱聯系[email protected]
        淘寶店鋪latexstudio.taobao.com 提供排版,模板定制,培訓,圖片處理,視頻教程等LaTeX服務。


        如果您投稿或者希望加入我們團隊,請發送您的簡歷到[email protected]。

        科技藝術的完美融合,專業精致的排版體驗

        聯系我們聯系我們