赫罗纳与赫塔菲什么关系:LaTeX技巧899:使用 TikZ 給版面著色

巴萨vs赫塔菲全场录像 www.vsttod.com.cn 有時候,我們需要給 LaTeX 添上一些背景顏色。講道理,大多數情況,我們只需要給整個 paper 都染色就好了。此時,我們可以用前文提到的方法來實現。

\watermark{0}{1}{\tikz\fill[cyan] (0,0) rectangle (\paperwidth, \paperheight);}

但是,若希望只針對特定的區域著色——比如只給版芯著色,就需要額外的討論了。

TeX 的版面尺寸

為了確定所需著色的區域,我們首先需要了解一下 TeX 的版面尺寸。在 LaTeX 中,我們可以使用 layout 宏包,打印當前的版面尺寸。

\documentclass{book}
\usepackage{layout}
\begin{document}
  \layout
\end{document}

輸出可見:

仔細觀察不難發現,LaTeX 中四個基本的版面區域,都是由矩形框定的。而確定對角兩點,就能確定一個矩形。我們以整個紙張的左下角為原點,試著來確定一下這四個區域的位置。 首先,LaTeX 區分奇數頁和偶數頁。對于奇偶頁來說,它們的邊距是不一樣的。因此,我們有必要區分 \oddsidemargin\evensidemargin。

% RequirePackage ifoddpage
\def\currentsidemargin{%
    \ifoddpageoroneside
        \oddsidemargin
    \else
        \evensidemargin
    \fi
}

同理,對于奇偶頁來說,邊注放置的位置也是不一樣的。因此,我們有必要確定邊注區域左邊線相對版芯左邊線的位置。

% RequirePackage ifoddpage
\def\currentmarginoffset{%
    \ifoddpageoroneside
        \textwidth + \marginsep
    \else
        -\marginsep - \marginparwidth
    \fi
}

這樣一來,我們就統一了奇偶頁的邊距和邊注的相對位置。

紙面

  • 左下角:(0, 0)

  • 右上角:(\paperwidth, \paperheight)

版芯

  • 左下角:(1in + \hoffset + \currentsidemargin, \paperheight - 1in - \voffset - \topmargin - \headheight - \headsep - \textheight)

  • 右上角:(1in + \hoffset + \currentsidemargin + \textwidth, \paperheight - 1in - \voffset - \topmargin - \headheight - \headsep)

頁眉

  • 左下角:(1in + \hoffset + \currentsidemargin, \paperheight - 1in - \voffset - \topmargin - \headheight)

  • 右上角:(1in + \hoffset + \currentsidemargin + \textwidth, \paperheight - 1in - \voffset - \topmargin)

頁腳

  • 左下角:(1in + \hoffset + \currentsidemargin, \paperheight - 1in - \voffset - \topmargin - \headheight - \headsep - \textheight - \footskip)

  • 右上角:(1in + \hoffset + \currentsidemargin + \textwidth, \paperheight - 1in - \voffset - \topmargin - \headheight - \headsep - \textheight - \footskip + \headheight)

邊注區域

  • 左下角:(1in + \hoffset + \currentsidemargin + \currentmarginoffset, \paperheight - 1in - \voffset - \topmargin - \headheight - \headsep - \textheight)

  • 右上角:(1in + \hoffset + \currentsidemargin + \currentmarginoffset + \marginparwidth, \paperheight - 1in - \voffset - \topmargin - \headheight - \headsep)

在指定區域填充底色

有了四個區域的具體位置,我們就可以著手對相關區域進行填色了。比如你想要使用 TikZ 對它們進行填色,就需要就相關區域定義具體的 node。索性,tikzpagenodes 宏包已經為我們妥善定義好了相關的區域。

  • current page: 整個紙張區域

  • current page text area: 整個版芯區域

  • current page header area: 整個頁眉區域

  • current page footer area: 整個頁腳區域

  • current page marginpar area: 整個邊注區域

于是,如果你想要從版芯區域的左上角開始,一直用青色填充到版芯區域右下角至紙張右邊的區域,就可以這樣做了。

\documentclass{book}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usepackage{xcolor}
\newcommand*{\ColorRectangle}[3]{%
  \tikz[overlay, remember picture]
    \fill[#1] (#2) rectangle (#3);%
}

\usepackage{blindtext}
\begin{document}
  \ColorRectangle{cyan}
  % left top anchor point
  {current page text area.north west}
  % right bottom anchor point
  {current page text area.south east -| current page.south east}
  \blindtext
\end{document}

選自:https://liam0205.me/2017/05/14/make-text-area-colored-by-TikZ/

分享到:
未經允許不得轉載:LaTeX技巧899:使用 TikZ 給版面著色
已有 條意見

    最新文章

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


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

      熱門評論

        聯系我們

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


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

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

        聯系我們聯系我們