2017-09-18 4 views
4

J'ai un fichier rsweave que je cours presque deux fois par semaine. La dernière fois que je l'ai utilisé un changement d'un certain nombre de choses et quand je le lance à compiler en pdf Je suis les erreurs suivantes: enter image description here Le pdf compile complitly, et la seule chose que je remarque que l'erreur fait est que la sortie pdf a une page supplémentaire (la première) tout en blanc. Je ne sais pas comment faire un exemple reproductible des erreurs car je ne sais pas quelle en est la cause. Mais de toute façon je veux juste savoir généralement comment déboguer un fichier rsweave lors de l'obtention d'erreurs de latex comme ceux de l'imageComment déboguer un Rsweave

+0

Jetez un oeil à [cette] (https://tex.stackexchange.com/questions/125399/how-to-trace-latex-errors-efficiently) comme point de départ. Si vous pouvez * diff * votre dernière compilation réussie qui peut accélérer votre solution. –

Répondre

0

Vous ne dites pas comment vous exécutez Sweave, mais cela ressemble à RStudio. Pour déboguer quelque chose comme ceci, exécutez simplement Sweave explicitement dans la console R, par ex. si votre fichier d'entrée est source.Rnw, exécutez

Sweave('source.Rnw') 

Cela produira source.tex. Ouvrez ce fichier dans un éditeur de texte et regardez le début de celui-ci. Vous verrez que \Schunk est utilisé sur la ligne 27, mais \begin{document} n'apparaît que plus tard.

Je suppose que vous avez ajouté un texte ou un morceau de code à l'en-tête. Tout le texte appartient après \begin{document}.

Édité pour ajouter: Il ressort des commentaires ci-dessous que vous utilisiez print(...) dans un bloc de code avant \begin{document}. Dans Sweave, la sortie print va dans le document. Si vous voulez qu'un message apparaisse dans le journal de la console mais pas dans le document, utilisez message("some text"). Vous devrez également supprimer l'écho de la commande si vous souhaitez le faire dans l'en-tête du document. Par exemple,

<<echo=FALSE,results=hide>>= 
message("Started at ", Sys.time()) 
@ 

se traduira par quelque chose comme ça dans votre journal de la console:

1 : keep.source term hide (Untitled.Rnw:6) 
Started at 2017-09-27 08:28:33 

et rien dans le document.

+0

ouais ça marche et je vois le texte avant le début du document, mais c'est un 'print' que je mets dans une fonction pour savoir combien de temps il faudra pour compiler. Alors, est-il possible d'utiliser 'print', disons en boucle et n'obtenons pas les erreurs que je reçois? –

+0

@alejandroandrade: Imprimez-vous sur la console ou sur le document? – Werner

+0

@Werner Je 'print'ing à la console ou du moins ce que je pense –