Bookdown/thesisdown/huskydown: 更改文档中单个页面的页边距
Bookdown/thesisdown/huskydown: change page margins for a single page within a document
我有一个用 Rmarkdown 编写的 huskydown
文档(基于 thesisdown
/bookdown
),它被编织到 PDF/LaTex 但后来也编织到 HTML.
对于文档中的单个页面,我想更改页边距(例如包含非常大的 table/figure/external PDF)。
此页之后,页边距应 return 为其默认值。
我尝试了什么:
---
author: 'Your R. Name'
date: 'May 20xx'
institution: 'Reed College'
division: 'Mathematics and Natural Sciences'
advisor: 'Advisor F. Name'
# If you have more two advisors, un-silence line 7
#altadvisor: 'Your Other Advisor'
department: 'Mathematics'
degree: 'Bachelor of Arts'
title: 'My Final College Paper'
knit: "bookdown::render_book"
site: bookdown::bookdown_site
output:
thesisdown::thesis_pdf: default
---
### Normal page margins again
```{r echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
\newpage
### Reduced page margins
```{r, echo = FALSE, results = "asis"}
cat("\newgeometry{left=1cm,right=1cm,top=1cm,bottom=1cm}")
```
```{r echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
```{r, echo = FALSE, results = "asis"}
cat("\restoregeometry")
```
\clearpage
Restore the page margins
### Normal page margins again
```{r echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
# ! Undefined control sequence.
# l.190 \newgeometry
# {left=1cm,right=1cm,top=1cm,bottom=1cm}
我也试过了
\newgeometry{left=1cm,right=1cm,top=1cm,bottom=1cm}
<!-- material for this page -->
\clearpage
\restoregeometry
如@bretauv 所建议。它适用于一个简单的 Rmd 文件,但不适用于我使用 huskydown
的用例。我得到了同样的错误信息。
正如@bretauv 在对你的问题的评论中所暗示的那样,这个问题并不是真正来自 rmarkdown 或 bookdown。这是一个很容易解决的 LaTeX 错误。
背景
您似乎知道,geometry 包中的命令可用于调整 LaTeX 文档中的布局(即尤其是页边距)。基本上,可以在 rmarkdown 文档中使用这样的 LaTeX 命令。但是,前提是加载了相应的 LaTeX 包。这里不是这种情况,因此错误
! Undefined control sequence.
l.190 \newgeometry
表示找不到命令 \newgeometry
。
解决方案
LaTeX 中的包使用 header 中的命令 \usepackage{<pkg_name>}
加载。这个命令不能简单地在 rmakdown 文档中使用,它必须在一个单独的模板中设置,告诉 pandoc 如何从 创建一个 PDF。 rmd 文件最后。对于 huskydown
/ thesisdown
,这是项目目录中的文件 template.tex。
打开文件并通过在 \begin{document}
之前正确添加以下行来确保已加载包,然后保存文件:
\usepackage[left=6cm,right=6cm,top=6cm,bottom=6cm]{geometry}
这将设置一些默认边距和间距。我选择了一些(相当引人注目的)值,您当然可以根据自己的喜好进行调整。
编织你的 .Rmd 应该工作,你现在应该看到 \newgeometry{}
或 \restoregeometry
的效果。另外,请注意没有必要用代码块来隔离它们。
例子
(使用 thesisdown
)
### Default (reduced) page margins as defined by geometry
```{r, echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
\newpage
\newgeometry{left=3cm,top=6cm,right=3cm,bottom=6cm}
### Larger margins
```{r, echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
我有一个用 Rmarkdown 编写的 huskydown
文档(基于 thesisdown
/bookdown
),它被编织到 PDF/LaTex 但后来也编织到 HTML.
对于文档中的单个页面,我想更改页边距(例如包含非常大的 table/figure/external PDF)。 此页之后,页边距应 return 为其默认值。
我尝试了什么:
---
author: 'Your R. Name'
date: 'May 20xx'
institution: 'Reed College'
division: 'Mathematics and Natural Sciences'
advisor: 'Advisor F. Name'
# If you have more two advisors, un-silence line 7
#altadvisor: 'Your Other Advisor'
department: 'Mathematics'
degree: 'Bachelor of Arts'
title: 'My Final College Paper'
knit: "bookdown::render_book"
site: bookdown::bookdown_site
output:
thesisdown::thesis_pdf: default
---
### Normal page margins again
```{r echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
\newpage
### Reduced page margins
```{r, echo = FALSE, results = "asis"}
cat("\newgeometry{left=1cm,right=1cm,top=1cm,bottom=1cm}")
```
```{r echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
```{r, echo = FALSE, results = "asis"}
cat("\restoregeometry")
```
\clearpage
Restore the page margins
### Normal page margins again
```{r echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
# ! Undefined control sequence.
# l.190 \newgeometry
# {left=1cm,right=1cm,top=1cm,bottom=1cm}
我也试过了
\newgeometry{left=1cm,right=1cm,top=1cm,bottom=1cm}
<!-- material for this page -->
\clearpage
\restoregeometry
如@bretauv 所建议。它适用于一个简单的 Rmd 文件,但不适用于我使用 huskydown
的用例。我得到了同样的错误信息。
正如@bretauv 在对你的问题的评论中所暗示的那样,这个问题并不是真正来自 rmarkdown 或 bookdown。这是一个很容易解决的 LaTeX 错误。
背景
您似乎知道,geometry 包中的命令可用于调整 LaTeX 文档中的布局(即尤其是页边距)。基本上,可以在 rmarkdown 文档中使用这样的 LaTeX 命令。但是,前提是加载了相应的 LaTeX 包。这里不是这种情况,因此错误
! Undefined control sequence.
l.190 \newgeometry
表示找不到命令 \newgeometry
。
解决方案
LaTeX 中的包使用 header 中的命令 \usepackage{<pkg_name>}
加载。这个命令不能简单地在 rmakdown 文档中使用,它必须在一个单独的模板中设置,告诉 pandoc 如何从 创建一个 PDF。 rmd 文件最后。对于 huskydown
/ thesisdown
,这是项目目录中的文件 template.tex。
打开文件并通过在 \begin{document}
之前正确添加以下行来确保已加载包,然后保存文件:
\usepackage[left=6cm,right=6cm,top=6cm,bottom=6cm]{geometry}
这将设置一些默认边距和间距。我选择了一些(相当引人注目的)值,您当然可以根据自己的喜好进行调整。
编织你的 .Rmd 应该工作,你现在应该看到 \newgeometry{}
或 \restoregeometry
的效果。另外,请注意没有必要用代码块来隔离它们。
例子
(使用 thesisdown
)
### Default (reduced) page margins as defined by geometry
```{r, echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```
\newpage
\newgeometry{left=3cm,top=6cm,right=3cm,bottom=6cm}
### Larger margins
```{r, echo=FALSE, out.width = '100%'}
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()
```