2016-05-04 18 views
0

Ich habe offenere Frage über das allgemeine Problem mit Knitr, dass ich vor kurzem entdeckt habe. Wenn ich kompilieren Dokumente über glänzend einfach mit:Shiny + knitr lädt keine Latex-Pakete, wenn die Dokumente kompiliert werden

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' 
) 

Einige Latex-Pakete als eso-pic oder hyperref nicht arbeiten und führen zu Fehler Running ' texi2div ' on ' pdf_shell.tex ' failed. Einschließlich compiler = 'xelatex' in die knit2pdfhilft mit einigen Funktionalität, sondern korrumpiert andere (Zum Beispiel funktioniert \TextField Funktion nicht und deckt Text).

Daher ist meine Frage, weiß jemand, wie ich das PDF mit Standard Compiler pdflatex kompilieren könnte, ohne den oben genannten Fehler zu bekommen? Oder Sie haben vielleicht irgendwelche Profi-Tipps, die die Probleme anders lösen könnten. Jede Eingabe wird sehr geschätzt.

bearbeiten: Ich muss erwähnen, dass wenn ich die App über R Studio laufen alles gut geht. App-Funktionalität (und Latex-Pakete) bricht, wenn ich es auf die shinyapps.io hochladen

bearbeiten 2: Ich entdeckte, dass, wenn ich in meiner .RNW Datei zusätzlichen Backslash enthalten die Datei kompiliert korrekt. So Version, die nicht funktioniert:

\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} 

Version, die funktioniert:

\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} 

Ist jemand in der Lage meines zu erklären, warum dies der Fall ist?

Antwort

1

Nach einigen Recherchen fand ich, dass einige Pakete wie hyperref (TextFields) könnten im Allgemeinen nicht mit normalen Tabellen arbeiten werden, wenn sie mit xelatex (proof) erstellt, sollen aber innerhalb der p-Säule, wie dies kompiliert werden:

\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} 

Es löst jedoch nicht das Problem in Shiny. Um es funktionieren zu lassen, musste ich einen weiteren Backslash hinzufügen, wenn ich zwischen den Zeilen teile (keine Ahnung warum). Also, wenn Sie es machen wollen, arbeiten Sie zusätzliche Backslash und der resultierende Code sollte wie folgt aussehen hinzufügen:

\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}