Search code examples
r-markdownarchlinuxtinytex

Unable to compile a Rmarkdown file on Arch Linux


I'm having a problem compiling a simple Rmarkdown file, and I'm clueless about the solutions. Here is the problem:

Document I want to compile

It's a simple document without R code, just text. In the header: title, author, date and output: pdf_document.

How the packages were installed

I installed the packages rmarkdown and tinytex with install.packages("tidyverse"). TinyTex (distribution) was installed like that: tinytex::install_tinytex().

The error

> rmarkdown::render("~/document.Rmd", "pdf_document")


processing file: document.Rmd
  |........................................................................| 100%
  ordinary text without R code


output file: document.knit.md

/usr/lib/rstudio/bin/pandoc/pandoc +RTS -K512m -RTS document.utf8.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output document.tex --lua-filter /home/rik/R/x86_64-pc-linux-gnu-library/4.0/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /home/rik/R/x86_64-pc-linux-gnu-library/4.0/rmarkdown/rmarkdown/lua/latex-div.lua --self-contained --highlight-style tango --pdf-engine pdflatex --variable graphics --variable 'geometry:margin=1in' 
tlmgr: package repository https://ctan.dcc.uchile.cl/systems/texlive/tlnet (verified)
tlmgr install: package already present: latex
tlmgr install: package already present: latex-base-dev
! LaTeX Error: File `article.cls' not found.

! Emergency stop.
<read *> 

Erro: LaTeX failed to compile document.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See document.log for more info.
Além disso: Warning message:
In has_crop_tools() : 
Tool(s) not installed or not in PATH: pdfcrop, ghostcript
-> As a result, figure cropping will be disabled.

document.log

This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex 2021.3.6)  6 MAR 2021 13:05
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**document.tex
(./document.tex
LaTeX2e <2020-10-01> patch level 4
L3 programming layer <2021-02-18>

! LaTeX Error: File `article.cls' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: cls)

Enter file name: 
! Emergency stop.
<read *> 
         
l.7 \usepackage
               {lmodern}^^M 
Here is how much of TeX's memory you used:
 22 strings out of 480971
 456 string characters out of 5907552
 278620 words of memory out of 5000000
 17342 multiletter control sequences out of 15000+600000
 403430 words of font info for 27 fonts, out of 8000000 for 9000
 14 hyphenation exceptions out of 8191
 32i,0n,39p,87b,13s stack positions out of 5000i,500n,10000p,200000b,80000s

!  ==> Fatal error occurred, no output PDF file produced!

#1 attempt: reinstall tinytex

I tried to uninstall (tinytex::uninstall_tinytex()), install again (tinytex::install_tinytex()) and reinstall (tinytex::reinstall_tinytex()), but the error persists.

#2 attempt: install lmodern

Although tinytex::check_installed("lm") == TRUE, I tried to install lmoden with tinytex::tlmgr_install("lmodern").

Installation

> tinytex::tlmgr_install("lmodern")
tlmgr install lmodern
tlmgr: package repository https://ctan.dcc.uchile.cl/systems/texlive/tlnet (verified)
tlmgr install: package lmodern not present in repository.
tlmgr: action install returned an error; continuing.
tlmgr: An error has occurred. See above messages. Exiting.
tlmgr update --self
fmtutil [WARNING]: You seem to have no formats defined in your fmtutil.cnf files!
tlmgr install lmodern
tlmgr: package repository https://ctan.dcc.uchile.cl/systems/texlive/tlnet (verified)
tlmgr install: package lmodern not present in repository.
tlmgr: action install returned an error; continuing.
tlmgr: An error has occurred. See above messages. Exiting.

Search

rik@arch ~ : sudo find / -regex ".*lmodern.sty"
/home/rik/.TinyTex/texmf-dist/tex/latex/lm/lmodern.sty

Environment

sessionInfo()

R version 4.0.4 (2021-02-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Arch Linux

Matrix products: default
BLAS:   /usr/lib/libblas.so.3.9.0
LAPACK: /usr/lib/liblapack.so.3.9.0

locale:
 [1] LC_CTYPE=pt_BR.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=pt_BR.UTF-8        LC_COLLATE=pt_BR.UTF-8    
 [5] LC_MONETARY=pt_BR.UTF-8    LC_MESSAGES=pt_BR.UTF-8   
 [7] LC_PAPER=pt_BR.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_4.0.4 tools_4.0.4

Variáveis de ambiente definidas no .bash_profile

export PATH=$PATH:$HOME/.local/appimages:$HOME/bin:$HOME/.local/bin

export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"

export TEXMFDIST=/usr/share/texmf-dist

Some observations

  • I'm having this problem on a fresh install of Arch Linux (wget is installed)
  • I always installed rmarkdown and tinytex this way, even on Arch, and it worked fine every time.
  • I tried on an Windows machine and on an Ubuntu machine, and it worked as expected.
  • The knit button on RStudio doesn't work as well

Solution

  • Two things to try:

    • What happens if you install texlive-latexextra from the arch repos? I'm guessing you are trying to avoid this given that you are using tinytex; the reason I ask is because it seems latex is looking in a system directory.
    • If that works, try commenting out the TEXMFDIST environmental variable in your .bashrc.