Shiny + knitr 在编译文档时不加载乳胶包

Shiny + knitr does not load latex packages when compiling the documents

关于我最近发现的 knitr 的一般问题,我还有更多悬而未决的问题。 当我通过 shiny 简单地编译文档时:

output$report = downloadHandler(
    filename = reactive({paste0(input$filename,'.pdf')}),

    content = function(file) {
      out = knit2pdf(input = 'pdf_shell.Rnw')
      file.rename(out, file)
    },

    contentType = 'application/pdf'
  )

一些 Latex 包如 eso-pichyperref 不工作并导致错误 Running ' texi2div ' on ' pdf_shell.tex ' failed。将 compiler = 'xelatex' 包含到 knit2pdf 有助于某些 功能,但会破坏其他功能(例如,\TextField 功能不起作用并覆盖文本)。

因此,我的问题是有谁知道如何使用默认编译器 pdflatex 编译 PDF 而不会出现上述错误?或者您可能有任何可以以不同方式解决问题的专业技巧。非常感谢任何输入。

编辑: 我不得不提一下,当我通过 R Studio 运行 应用程序时,一切正常。当我将应用程序功能(和乳胶包)上传到 shinyapps.io

时中断

edit 2: 我发现当我在我的 .Rnw 文件中包含额外的反斜杠时,文件编译正确。所以不起作用的版本:

\begin{Form}
\begin{tabularx}{\textwidth}{p{8cm}}
Description \
\TextField[name=1, multiline=true, width=\linewidth,height=0.6in, bordercolor = 1 1 1, charsize=0pt]{} \
\end{tabularx}
\end{Form}

有效版本:

\begin{Form}
    \begin{tabularx}{\textwidth}{p{8cm}}
    Description \\
    \TextField[name=1, multiline=true, width=\linewidth,height=0.6in, bordercolor = 1 1 1, charsize=0pt]{} \\
    \end{tabularx}
    \end{Form}

有人能解释我为什么会这样吗?

经过一些研究,我发现像 hyperref (TextFields) 这样的包在使用 xelatex (proof) 编译时通常可能无法使用普通表, 但应在 p 列内编译,如下所示:

\begin{Form}
\begin{tabularx}{\textwidth}{p{8cm}}
Description \
\TextField[name=1, multiline=true, width=\linewidth,height=0.6in, bordercolor = 1 1 1, charsize=0pt]{} \
\end{tabularx}
\end{Form}

但是并没有解决Shiny内部的问题。为了让它工作,我不得不在行之间拆分时再添加一个反斜杠(不知道为什么)。 所以如果你想让它工作,你必须添加额外的反斜杠,结果代码应该是这样的:

\begin{Form}
    \begin{tabularx}{\textwidth}{p{8cm}}
    Description \\
    \TextField[name=1, multiline=true, width=\linewidth,height=0.6in, bordercolor = 1 1 1, charsize=0pt]{} \\
    \end{tabularx}
    \end{Form}