首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rmarkdown中使用\newenvironment

在rmarkdown中使用\newenvironment
EN

Stack Overflow用户
提问于 2020-11-16 03:29:19
回答 1查看 88关注 0票数 0

我正在尝试在一个Rmarkdown文档中创建一个codebook风格的环境,如下所示:

代码语言:javascript
复制
---
title: "Title"
author: "Author"
date: "`r Sys.Date()`"
output:
  pdf_document:
    fig_caption: yes
    fig_crop: yes
    keep_tex: no
    number_sections: yes
    citation_package: biblatex
  html_document:
    df_print: paged
header-includes:
- \usepackage[english]{babel}
- \usepackage[utf8]{inputenc}
- \usepackage{amsmath}
- \usepackage{graphicx}
- \usepackage{caption}
- \usepackage{physics}
- \usepackage{float}
- \usepackage{tocloft}
- \usepackage{inputenc}
- \usepackage{setspace}
- \usepackage{tabularx}
- \usepackage{lipsum}
- \usepackage{listings}
- \usepackage{wrapfig}
- \usepackage{mathtools}
- \usepackage{lscape}
- \usepackage{rotating}
- \usepackage{epstopdf}
- \usepackage{hyperref}
- \geometry{letterpaper, portrait, margin=1in}
- \hypersetup{colorlinks = false, linkbordercolor = {white}, citebordercolor = {white},
  urlbordercolor = {white}}
- \lstset{language=R, basicstyle=\small\ttfamily,stringstyle=\color{DarkGreen},otherkeywords={0,1,2,3,4,5,6,7,8,9},morekeywords={TRUE,FALSE},deletekeywords={data,frame,length,as,character}, keywordstyle=\color{blue}, commentstyle=\color{DarkGreen}}
fontsize: 14pt
---

\pagenumbering{arabic}

\doublespacing

\newpage

Defining function here:

\newlength\cbl
\newenvironment{codebook}[1][]{
    \settowidth{\cbl}{#1}
    \parskip1em plus .3em minus .2em
    \parindent0pt
    \def\code##1##2{{\bfseries ##1}\hfill
        \parbox[t]{\dimexpr\linewidth-15em-\cbl}{##2}\par}}{\noindent}

\newpage

\singlespacing

Testing out the environment here: 

\subsubsection{Codebook}
    
\begin{codebook}
  \code{country}{Country name.}
  \code{year}{Year of country observation.}
  \code{codename}{Country code (character).}
  \code{codenumber}{Country code (numeric).}
\end{codebook}

我已经确认\newenvironment代码在TeXstudio中可以正常工作,但当我尝试将此文档编织成PDF时,我得到以下错误:

代码语言:javascript
复制
! Undefined control sequence.
<argument> \code

我假设\newenvironment命令中有一些东西不能很好地使用rmarkdown语法。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-16 05:42:46

如果您在YAML中设置了keep_tex: yes,那么您可以得到关于哪里出了问题的提示。从\subsubsection{Codebook}开始,您将看到

代码语言:javascript
复制
\subsubsection{Codebook}

\settowidth{\cbl}{\code}
    \parskip 1em plus .3em minus .2em
    \parindent 0pt
    \def\code#\code#

所以发生了什么,Pandoc已经尝试处理你的环境定义,而不是离开它。您可以通过像这样输入定义来强制它忽略该定义:

代码语言:javascript
复制
```{=latex}

\newlength\cbl

\newenvironment{codebook}1{

代码语言:javascript
复制
\settowidth{\cbl}{#1}
代码语言:javascript
复制
\parskip1em plus .3em minus .2em
代码语言:javascript
复制
\parindent0pt
代码语言:javascript
复制
\def\code##1##2{{\bfseries ##1}\hfill
代码语言:javascript
复制
    \parbox[t]{\dimexpr\linewidth-15em-\cbl}{##2}\par}}{\noindent}
代码语言:javascript
复制

在您的最小示例中,这似乎就足够了,但您可能需要在实际文档中包装更多内容。

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

https://stackoverflow.com/questions/64848890

复制
相关文章

相似问题

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