如何为 r markdown pdf 输出创建自定义示例环境?
How to create a custom example environment for r markdown pdf output?
我希望在 r markdown 中创建一个自定义样式的示例环境来呈现 pdf 输出。
我想要看起来像this or like this的东西,但我仍然希望示例被编号,并且我想使用简单的语法
'''{example} <!-- I use ' instead of ` to make it appear in this question -->
Hello
'''
贯穿我的文档。这是可以实现的吗?提前致谢!
编辑:我正在添加一个最小的例子
---
header-includes:
- \newtheorem{theorem}{Theorem}
- \newtheorem{example}{Example}
urlcolor: blue
extension: latex_macros
numbersections: true
output:
bookdown::pdf_document2:
toc: false
biblio-style: apalike
---
'''{example} <!-- I use ' instead of ` to make it appear in this question -->
Hello
'''
然后我得到这样的东西
但我希望示例具有样式和编号。也许放在一个看起来像这样的块中(图片来自 here,但没有示例编号,我不能只使用 r markdown 块)
你可以像普通的LaTeX一样使用一些包。我给你一个包 thmtools 和 mdframed.
的例子
---
output:
pdf_document:
includes:
in_header: preamble.tex
keep_tex: yes
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
\begin{example}
Hello I am an example.
\end{example}
文件preamble.tex:
\usepackage{amsthm,thmtools}
\usepackage{mdframed}
\definecolor{verylightgray}{gray}{0.9}
\declaretheoremstyle[
headfont=\color{black}\normalfont\bfseries,
bodyfont=\color{black}\normalfont\sffamily,
mdframed={
backgroundcolor=verylightgray,
hidealllines=true,
innertopmargin=2pt,
innerbottommargin=2pt,
skipabove=\topsep,
skipbelow=\topsep
}]{mystyle}
\declaretheorem[
style=mystyle,
name=Example
]{example}
需要换行符或上边距...
您可以使用 tcolorbox
作为示例:
---
header-includes: |
\BeforeBeginEnvironment{document}{
\usepackage[most]{tcolorbox}
\let\example\undefined
\let\endexample\undefined
\newtcolorbox[auto counter]{example}{
colback=white,
colbacktitle=black,
arc=0mm,
title={Example~\thetcbcounter:},
bottom=-.7\baselineskip,
colframe=black,
fonttitle=\bfseries
}}
urlcolor: blue
extension: latex_macros
numbersections: true
output:
bookdown::pdf_document2:
toc: false
keep_tex: true
biblio-style: apalike
---
test
```{example}
Hello
```
我希望在 r markdown 中创建一个自定义样式的示例环境来呈现 pdf 输出。
我想要看起来像this or like this的东西,但我仍然希望示例被编号,并且我想使用简单的语法
'''{example} <!-- I use ' instead of ` to make it appear in this question -->
Hello
'''
贯穿我的文档。这是可以实现的吗?提前致谢!
编辑:我正在添加一个最小的例子
---
header-includes:
- \newtheorem{theorem}{Theorem}
- \newtheorem{example}{Example}
urlcolor: blue
extension: latex_macros
numbersections: true
output:
bookdown::pdf_document2:
toc: false
biblio-style: apalike
---
'''{example} <!-- I use ' instead of ` to make it appear in this question -->
Hello
'''
然后我得到这样的东西
但我希望示例具有样式和编号。也许放在一个看起来像这样的块中(图片来自 here,但没有示例编号,我不能只使用 r markdown 块)
你可以像普通的LaTeX一样使用一些包。我给你一个包 thmtools 和 mdframed.
的例子---
output:
pdf_document:
includes:
in_header: preamble.tex
keep_tex: yes
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
\begin{example}
Hello I am an example.
\end{example}
文件preamble.tex:
\usepackage{amsthm,thmtools}
\usepackage{mdframed}
\definecolor{verylightgray}{gray}{0.9}
\declaretheoremstyle[
headfont=\color{black}\normalfont\bfseries,
bodyfont=\color{black}\normalfont\sffamily,
mdframed={
backgroundcolor=verylightgray,
hidealllines=true,
innertopmargin=2pt,
innerbottommargin=2pt,
skipabove=\topsep,
skipbelow=\topsep
}]{mystyle}
\declaretheorem[
style=mystyle,
name=Example
]{example}
需要换行符或上边距...
您可以使用 tcolorbox
作为示例:
---
header-includes: |
\BeforeBeginEnvironment{document}{
\usepackage[most]{tcolorbox}
\let\example\undefined
\let\endexample\undefined
\newtcolorbox[auto counter]{example}{
colback=white,
colbacktitle=black,
arc=0mm,
title={Example~\thetcbcounter:},
bottom=-.7\baselineskip,
colframe=black,
fonttitle=\bfseries
}}
urlcolor: blue
extension: latex_macros
numbersections: true
output:
bookdown::pdf_document2:
toc: false
keep_tex: true
biblio-style: apalike
---
test
```{example}
Hello
```