首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在下单书末尾创建几个索引定义/定理

在下单书末尾创建几个索引定义/定理
EN

Stack Overflow用户
提问于 2019-09-20 13:19:35
回答 1查看 101关注 0票数 3

这个code example to generate a list of definitions适用于我,但只适用于一个索引列表。每当我试图添加另一个列表(例如,定理)时,只有在设置中最后定义的列表才能正常工作。

可能我没有正确地修改knit_hooks$set()

代码语言:javascript
复制
---
title: "Create several lists"
output: bookdown::html_document2
---

```{r setup, include=FALSE}

def_list = list()

Knitr::knit_hooks$set(引擎=函数(前面,选项,环境){

代码语言:javascript
复制
if (before && options$engine == 'definition') {
代码语言:javascript
复制
# collect definition terms from options$name
代码语言:javascript
复制
def_list[[options$label]] <<- options$name
代码语言:javascript
复制
}
代码语言:javascript
复制
NULL

})

thm_list = list()

knitr::knit_hooks$set(engine =function(前面,选项)){

代码语言:javascript
复制
if (before && options$engine == 'theorem') {
代码语言:javascript
复制
# collect theorem terms from options$name
代码语言:javascript
复制
thm_list[[options$label]] <<- options$name
代码语言:javascript
复制
}
代码语言:javascript
复制
NULL

})

代码语言:javascript
复制
```{definition, d1, name='Foo: My first definition'}

Foo被定义为..。

代码语言:javascript
复制
```{theorem, t1, name='My first theorem'}

第一个定理..。

代码语言:javascript
复制
```{definition, d2, name='Bar: My second definition'}

酒吧定义为..。

代码语言:javascript
复制
```{theorem, t2, name='My second theorem'}

第二个定理..。

代码语言:javascript
复制
---

**All definitions:**

```{r echo=FALSE, results='asis'}

def_list = unlist(def_list)

cat(sprintf('- \@ref(def:%s) %s',name( def_list),def_list),sep = '\n')

代码语言:javascript
复制
**All theorems:**

```{r echo=FALSE, results='asis'}

thm_list = unlist(thm_list)

cat(sprintf('- \@ref(thm:%s) %s',name( thm_list),thm_list),sep = '\n')

代码语言:javascript
复制

产出:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-26 00:19:49

问题是你重新设置了钩子。因此,应该将钩子设置一次以处理两个列表,如下所示:

代码语言:javascript
复制
---
title: "Create several lists"
output: bookdown::html_document2
---

```{r setup, include=FALSE}

def_list = list()

thm_list = list()

knitr::knit_hooks$set(engine =function(前面,选项)){

代码语言:javascript
复制
if ( before ) {
代码语言:javascript
复制
    if ( options$engine == "theorem" ) {
代码语言:javascript
复制
        thm_list[[options$label]] <<- options$name
代码语言:javascript
复制
    } else if ( options$engine == "definition" ) {
代码语言:javascript
复制
        def_list[[options$label]] <<- options$name
代码语言:javascript
复制
    }
代码语言:javascript
复制
}
代码语言:javascript
复制
NULL

})

代码语言:javascript
复制
```{definition, d1, name='Foo: My first definition'}

Foo被定义为..。

代码语言:javascript
复制
```{theorem, t1, name='My first theorem'}

第一个定理..。

代码语言:javascript
复制
```{definition, d2, name='Bar: My second definition'}

酒吧定义为..。

代码语言:javascript
复制
```{theorem, t2, name='My second theorem'}

第二个定理..。

代码语言:javascript
复制
---

**All definitions:**

```{r echo=FALSE, results='asis'}

def_list = unlist(def_list)

cat(sprintf('- \@ref(def:%s) %s',name( def_list),def_list),sep = '\n')

代码语言:javascript
复制
**All theorems:**

```{r echo=FALSE, results='asis'}

thm_list = unlist(thm_list)

cat(sprintf('- \@ref(thm:%s) %s',name( thm_list),thm_list),sep = '\n')

代码语言:javascript
复制

然后得到所需的输出:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58029200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档