Я использую bookdown в RStudio для компиляции серии конспектов лекций в одну рукопись. У меня есть настраиваемый блок, в котором есть пронумерованный список.

    ```{r, echo=FALSE}
    instructorVersion<-TRUE
    ```
    What is 1+1?

    ```{block, type='ANSWER', echo=instructorVersion, purl=FALSE}
    1. This answer is easy
    2. Yes, really, that's all that I was asking.
    ```

    What is the meaning of life?

    ```{block, type='ANSWER', echo=instructorVersion, purl=FALSE}
    The Answer is only for Instructor's Eyes

    1. The answer is hard
    2. You won't get it right
    3. But try anyway
    ```

Первый блок получается в латексе нормально:

\begin{ANSWER}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  This answer is easy
\item
  Yes, really, that's all that I was asking.
\end{enumerate}
\end{ANSWER}

Но по какой-то причине второй блок имеет другой латексный код, что создает проблему при компиляции

\begin{ANSWER}
The Answer is only for Instructor's Eyes

\begin{enumerate}
\def\arabic{enumi}.{\arabic{enumi}.} %%% This line is different
\tightlist
\item
  The answer is hard
\item
  You won't get it right
\item
  But try anyway
\end{enumerate}
\end{ANSWER}

Я получаю следующую ошибку:

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.181   T
         he answer is hard 

Удаление строки, отмеченной выше (с помощью %%%), или замена ее версией в первом блоке позволяет латексу правильно компилироваться.

У меня нет проблем, если я использую блоки Div ::: (латексный код выглядит как первый код выше, который компилируется правильно).

    ```{r, echo=FALSE}
    instructorVersion<-TRUE
    ```
    What is 1+1?

    ::: {.ANSWER}
    1. This answer is easy
    2. Yes, really, that's all that I was asking.
    :::

    What is the meaning of life?

    ::: {.ANSWER}
    The Answer is only for Instructor's Eyes

    1. The answer is hard
    2. You won't get it right
    3. But try anyway
    :::

Но я использую стиль ```block, а не ::: .{ANSWER}, потому что я хочу иметь возможность включать и выключать отображение текста, как я показал выше. Не знаю, могу ли я это сделать с форматом :::. (Я был бы счастлив, если бы получил ответ, который показал мне, как использовать версию :::, но с включением / выключением, как у меня сейчас.)

Вот моя команда среды в латексе, которая в основном делает текст красным (я не думаю, что это имеет значение, и я сделал это просто пустой средой и получил то же самое, но только для полноты)

\newenvironment{ANSWER}{%
\envspace\itshape\color{red}

}
{}

Кроме того, я запускаю это в RStudio с помощью следующей команды:

render_book('index.Rmd',envir=new.env(),clean=FALSE,output_dir='test', output_format=c('bookdown::pdf_book') )

R Studio 1.3.959, г.

> sessionInfo()
R version 4.0.1 (2020-06-06)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.4

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] bookdown_0.20

loaded via a namespace (and not attached):
 [1] compiler_4.0.1  magrittr_1.5    htmltools_0.5.0 tools_4.0.1    
 [5] rstudioapi_0.11 yaml_2.2.1      tinytex_0.24    stringi_1.4.6  
 [9] rmarkdown_2.3   highr_0.8       knitr_1.29      stringr_1.4.0  
[13] xfun_0.15       digest_0.6.25   rlang_0.4.7     evaluate_0.14  
2
epurdom 29 Июл 2020 в 03:41

1 ответ

Лучший ответ

Я не знаю, что не так с движком block в вашем вопросе, но если все, что вам нужно, это возможность переключать контент, вы можете использовать движок asis и поместите Div внутрь блока asis:

```{r, echo=FALSE}
instructorVersion <- TRUE
```
What is 1+1?

```{asis, echo=instructorVersion}
::: {.ANSWER data-latex=""}
1. This answer is easy
2. Yes, really, that's all that I was asking.
:::
```

What is the meaning of life?

```{asis, echo=instructorVersion}
::: {.ANSWER data-latex=""}
The Answer is only for Instructor's Eyes

1. The answer is hard
2. You won't get it right
3. But try anyway
:::
```

Обратите внимание, что data-latex="" потребуется в следующей версии rmarkdown .

1
Yihui Xie 12 Авг 2020 в 20:39