在r bookdown中使用自定义TeX时有多个页眉/页脚

时间:2017-11-03 07:18:30

标签: r bookdown

喜欢预订。但是,我将我的书从LaTeX移植到了bookdown中,并希望获得页眉/页脚的帮助。

我有一个自定义代码,可以在我的LaTeX中生成页眉和页脚:

% HEADER AND FOOTER MANIPULATION
 % for normal pages
 \nouppercaseheads
 \headsep = 0.16in
 \makepagestyle{mystyle}
 \setlength{\headwidth}{\dimexpr\textwidth+\marginparsep+\marginparwidth\relax}
 \makerunningwidth{mystyle}{\headwidth}
 \makeevenhead{mystyle}{}{\textls[100]{\textsf{\small\scshape\thetitle}}}{}
 \makeoddhead{mystyle}{}{\textls[100]{\textsf{\small\scshape\leftmark}}}{}
 \makeevenfoot{mystyle}{}{\textls[100]{\textsf{\small\thepage}}}{}
 \makeoddfoot{mystyle}{}{\textls[100]{\textsf{\small\thepage}}}{}
 \clearmark{section} % removing section in the headers
 \makeatletter
 \makepsmarks{mystyle}{%
 \createmark{chapter}{left}{nonumber}{\@chapapp\ }{.\ }}
 \makeatother

 % for pages where chapters begin
 \makepagestyle{plain}
 \makerunningwidth{plain}{\headwidth}
 \makeevenfoot{plain}{}{}{}
 \makeoddfoot{plain}{}{}{}
 \pagestyle{mystyle}
% END HEADER AND FOOTER MANIPULATION

我将整个LaTeX序言放在preamble.tex中(我还没有在书中添加内容)。它呈现以下内容:

How bookdown renders the LaTeX

渲染应该看起来像这样:

The actual LaTeX render

此外,这里是index.Rmd中YAML中的内容。

documentclass: memoir
papersize: smalldemyvo
indent: yes
microtypeoptions:
  - protrusion
  - tracking
fontfamily: Alegreya
fontfamilyoptions:
  - osf
fontsize: 11pt
output:
  bookdown::pdf_book:
    template: null

我刚刚预订,但我确实阅读了文档。我觉得我需要帮助两件事。

  1. 如何删除自动生成的页眉和页脚?
  2. 如何制作"内容"从ToC 消失?
  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

默认情况下,bookdown使用一些内置模板。如果你需要更多的调整,你可以制作你自己的.tex文件(preamble.tex,before_body.tex,after_body.tex,template.tex)并在index.Rmd的yaml部分指定它们:

bookdown::pdf_book:
  includes:
    in_header: preamble.tex
    before_body: before_body.tex
    after_body: after_body.tex
template: template.tex

bookdown将preamble.tex,before_body.tex和after_body.tex与您图书的主体(在template.tex中标记为$body$)合并到模板控制下的结构中的一个.tex文件中.tex,并使用pandoc和LaTex将其编译成pdf书。

在您的情况下,您必须以正确的方式将自定义代码插入template.tex。 @ yihui&​​#39; s demo显示了一个很好的例子。

有关自定义这些.tex文件的更多示例,我建议你可以查看' bookdownplus'我开发的包,它提供了19个示例,展示了如何将LaTeX模板定制到bookdown的框架中,或者阅读Chapter 8.3 Create Your Own Templates in the bookdownplus textbook

答案 1 :(得分:-1)

编辑回答

bookdown具有内置模板(主要由documentclass和/或Pandoc决定)。请参阅记事本文档的ThemingTemplates部分。

正如@pzhao建议的那样,要学习的例子是template in the bookdown-chinese回购。观察从Rmd文件引入数据的变量。它们被$$括起来,例如$body$_output.yml引用了此模板。这样,您可以覆盖默认模板,从而消除重复的页眉/页脚。您的LaTeX模板决定页眉/页脚的哪些部分。一个例子是我的问题中的LaTeX代码。

也可以通过调整自定义LaTeX模板来控制ToC表中Contents的外观。我使用memoir类,并且可以找到帮助删除自引用here。我的自定义LaTeX模板已经处理好了,所以一旦我弄清楚如何使用我的自定义模板,它就会自行修复。