仅当引用 preamble.tex 时,环境才未定义

仅当引用 preamble.tex 时,环境才未定义

我正在尝试使用 R Markdown 排版一些笔记,但在使用环境时遇到了困难\adjustwidth。只有当我引用一些时才会出现此问题preamble.tex。例如,如果我有一个空白的preamble.tex,然后运行以下命令,就会出现错误。

--- 
header-includes: 
   - \usepackage{changepage}
output:   
  pdf_document:
    includes:
      in_header: preamble.tex
---
\begin{adjustwidth}{1cm}{1cm}
Test
\end{adjustwidth}

但是,如果我不引用 preamble.tex(只是空白的)它就可以工作!

--- 
header-includes: 
   - \usepackage{changepage}
output: pdf_document
---
\begin{adjustwidth}{1cm}{1cm}
Test
\end{adjustwidth}

我不认为这是 preamble.tex 的问题,因为 a) 它实际上是空白的 b) 只要我不使用 \adjustwidth,我就可以引用它。例如,下面的方法有效。

--- 
header-includes: 
   - \usepackage{changepage}
output:   
  pdf_document:
    includes:
      in_header: preamble.tex
---
Test

任何想法?

结果mwe.tex

\documentclass[]{article} 
\usepackage{lmodern} 
\usepackage{amssymb,amsmath} 
\usepackage{ifxetex,ifluatex} 
\usepackage{fixltx2e} % provides \textsubscript 
\begin{document}
\begin{adjustwidth} 
Test 
\end{adjustwidth} 
\end{document}

答案1

我只是不懂 r,但我可以帮你处理这个tex文件。现在你可以更改你的 r 代码,并将结果与​​我下面显示的 mwe 进行比较。

在生成的文件中,让我们将其命名为mwe.tex您必须添加包的调用changepage以获取adjustwidth定义的环境。如何做到这一点r我无法帮助您,例如在页面上询问堆栈溢出和使用标签r

添加对该包环境的调用后,adjustwidth定义,但缺少左右边距缩进的两个参数。

所以你必须改变你的

\begin{adjustwidth}

\begin{adjustwidth}{1cm}{1cm}

因此最后您需要从 r 代码中获取以下编译代码:

\documentclass[]{article} 
\usepackage{lmodern} 
\usepackage{amssymb,amsmath} 
\usepackage{ifxetex,ifluatex} 
%\usepackage{fixltx2e} % provides \textsubscript 

\usepackage{changepage} % <=============================================
\usepackage{showframe}


\begin{document}
\begin{adjustwidth}{1cm}{1cm} % <=======================================
Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test 
\end{adjustwidth} 
\end{document}

请注意,我评论了 的调用fixltx2e,因为它不再需要(2015 年后添加到 LaTeX 内核)。

请注意,我只showframe向此 mwe 添加了包,以可视化打字区域和边距以及右侧和左侧缩进adjustwidth

然后你应该得到结果:

结果

答案2

对于任何感兴趣的人,我找到了一种方法来让它发挥作用。出于某种原因

header_includes:
   - \usepackage{changepage}

不起作用,但下面的方法起作用了

output:
   - pdf_document: 
      - extra_dependencies: ['changepage']

做过!

相关内容