Cannot compile moderncv class document when using tinytex in RStudio - r

I am unable to compile an Rmd file using tinytex via RStudio. I can compile the same file without issues on another computer that has a full LaTeX installation.
I have written my CV using the moderncv class in RMarkdown. I have a full LaTeX distribution installed on one of my computers and I can compile the CV without any problems. On my new computer I have installed TinyTex via the r package tinytex and use it to compile Rmd files to pdf via RStudio. For some reason I cannot compile the same document on my new computer when using tinytex. I have tried manually installing all of the packages I load in my preamble without luck. My preliminary searches have not uncovered in problems similar to this one. I am using the kjh-vita template provided by Kieran Healy, though it has been modified to work with Rmd.
I've noticed that if I set the keep_tex YAML argument to yes that the .tex file that is produced is escaping out all of the curly braces (see image). The green portion is how it should look (i.e., how it looks in my .Rmd file) and the red portion is what is produced in the .tex file after knitting the document.
I believe the solution to my problem involves getting tinytex to stop escaping all of the curly braces in the file. I have no idea why this is happening or how to get it to stop.
update: add minimal working example
% Basic preamble
\documentclass[11pt,letterpaper]{moderncv}
% Pull from header includes
% moderncv themes
\moderncvtheme[black]{classic} % optional argument are 'blue' (default),
% 'orange', 'green', 'red', 'purple',
% 'grey' and 'roman' (for roman fonts,
% instead of sans serif fonts)
%\usepackage{assets/tex/moderncvthemeclassic}
%\usepackage[utf8]{inputenc} %character encoding
%\usepackage{hyperref}
\usepackage{url,fancyhdr}
% needed for xelatex to work
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xcolor}
% my additions:
% include ipa and bib formatting
\let\sups\relax
\usepackage{tipa}
\usepackage{multicol}
\usepackage[spanish, english]{babel}
\usepackage{natbib}
\usepackage{bibentry}
\newcommand{\bibverse}[1]{\begin{verse} \bibentry{#1}. \end{verse}}
\usepackage{hanging}
\usepackage{fontawesome5}
\usepackage{academicons}
% adjust the page margins
\usepackage[scale=0.8]{geometry}
%\setlength{\hintscolumnwidth}{3cm} % if you want to change the
% width of the column with the
% dates
%\setlength{\maketitlenamewidth}{10cm}} % only for the classic theme,
% if you want to change the
% width of your name placeholder
% (to leave more space for your
% address details
% Personal data
\firstname{Person}
\familyname{Name}
\title{Assistant Professor}
\address{Some University \\
Department of Stuff}{City, State 08401}
% \mobile{}
\phone{(456) 921-6345}
%\fax{(456) 921-6345}
\email{anemail#mail.edu}
\homepage{www.page.com}
% \extrainfo{}
\def\mytitle{Professor}
\def\myphone{(456) 921-6345}
\def\myskype{myskype}
\def\myemail{jmymail#mail.edu}
\def\myweb{www.page.com}
\def\facweb{https://www.page.com}
\def\school{Some University}
\def\schoolweb{http://www.page.edu}
%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs
% longer than one page
\begin{document}
\bigskip
\vspace{.1in}
\noindent{\huge {\textsc{My Name}, Ph.D.}}
\reversemarginpar
\noindent
\rule{492pt}{1.5pt}
\vspace{-0.1in}
\begin{minipage}[t]{2.4in}
\flushleft
\href{\schoolweb}{\school} \\
My buildin \\
15 Street place \\
Street, \textsc{State} 08305
\end{minipage}
\hfill
\begin{minipage}[t]{1.7in}
\flushleft
\faUniversity \phantom{-}\href{\facweb}{Faculty page} \\
\faPhone \phantom{-}\myphone \\
\faPaperPlane \phantom{-}\href{\myemail}{\texttt{\myemail}} \\
\faHome \phantom{-}\href{https://www.page.com}{\texttt{\myweb}} \\
\end{minipage}
\hfill
\begin{minipage}[t]{1.7in}
\flushright
Google scholar: \href{http://www.page.com}{\aiGoogleScholar} \\
ResearchGate: \href{http://www.page.com}{\aiResearchGate} \\
#jvcasillas \href{https://www.github.com/}{\faGithub} \\
#jvcasill \href{https://www.twitter.com/}{\faTwitter}
\end{minipage}
\vspace{0.1in}
\section{Appointments}
\cventry{2016 -- Present}
{\mytitle}
{Some University, Place}
{}
{}
{Name of program,
Department of stuff}
\end{document}

After pandoc version 2.5 the \cventry{} lines are not correctly parsed into latex. Specifically, this was what was causing the problems:
\cventry{2016 -- Present}
{\mytitle}
{Some University, Place}
{}
{}
{Name of program,
Department of stuff}
I can knit the document that contains the above code with pandoc 2.5. Any version above 2.5 must be written as follows:
\cventry{2016 -- Present}{\mytitle}{Some University, Place}{}{}{Name of program, Department of stuff}
Pandoc inserts an escape character \{\} whenever there is blank space (as seen in the image above).

Related

Unable to make sense out of "Rstudio pdf knit fails with 'Environment Shaded undefined' error" [duplicate]

This question already has answers here:
Rstudio pdf knit fails with "Environment Shaded undefined" error
(5 answers)
Closed 4 years ago.
I am creating a report using the rticles package and I get the following error when knitting an rticle IEEE paper which includes code-chunks:
output file: rticles_IEEE.knit.md
! LaTeX Error: Environment Shaded undefined.
I tried to understand how to fix the issue and played around with this question/answer. But I fail to see where to put the fix into the files created by knitting (e.g. mydoc.tex, IEEE_trans.cls).
Here is my minimal example:
---
title: Cool IEEE ArticleS
author:
- name: Ray
abstract: |
The abstract of my first IEEE paper with rmarkdown
output: rticles::ieee_article
---
Introduction
=============
This is the introduction. And here comes a cool code chunk.
```{r}
x <- seq(-3,3,0.1)
y <- x^3
plot(x,y)
```
Notes:
It was commented that this is a potential duplicate of another question. The problem with the answers given in that thread is that it does not explain where to make the changes.
I fail to understand the pointer to Yihui's fix.
The aforementioned files, but also the knitted .tex does not come with labels of the form \makeatother or \makeatletter.
The overall issue was that displaying a code chunk in the rticles IEEE paper throws an error pointing at the undefined Shaded environment.
The solution given in the older post works, if you add the following to the underlying LaTeX template.tex. My problem was that I tried to edit the tex or cls template in the working directory. The Eureka-moment came when I stumbled over the following (related) stackoverflow question.
For the rticles package, the template.tex is not located in your directory you work on the article R Markdown file. Instead, they are stored within the package library folder (i.e. the folder that .libPaths() uses). The file can be found in rmarkdown/templates/ and search for the rticles folder you are using (in my case: ieee_article). In the resources sub-folder you will find the target template.tex. Make a copy of it, for recovery purposes.
Open the template.tex and insert the following anywhere before the LATEX command line \begin{document} (note: aka the preamble of that template.tex file). For example, I inserted it just before the \begin{document} line:
% code to insert to fix environment Shaded undefined issue with
% showing code chunks in rticle IEEE template.
$if(highlighting-macros)$
$highlighting-macros$
$endif$
\begin{document}
Save the change and go back to R/RStudio and your IEEE paper R Markdown file and hit the knit button. R code chunks will now be displayed (if you want to).
I have not tested it thoroughly, but this recipe should work for all rticle templates missing an environment definition for showing r-code chunks (i.e. environment{Shaded})
Rather than duplicating the template, you can put the required code for allowing the highlighting in a separate header.tex file. This is essentially what replaces $highlighting-macros$ when you include this in the template:
header.tex
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{248,248,248}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\ImportTok}[1]{#1}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
\newcommand{\BuiltInTok}[1]{#1}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
Make a copy of this file in your directory and then refer to this header in the YAML:
---
title: Short Paper
output:
rticles::ieee_article:
includes:
in_header: header.tex
---
# Introduction
This is the introduction. And here comes a cool code chunk.
```{r}
x <- seq(-3,3,0.1)
y <- x^3
plot(x,y)
```
This approach should work for any template which includes the $header-includes$ tag in thetemplate.tex`

Rmd to PDF compiling error: Package geometry \paperwidth (0.0pt) too short

I am writing a paper in R markdown and need to format it with this .cls file supplied by an academic journal.
A minimal .tex file compiles perfectly well with the above cls file.
My .tex file (compiled on ShareLaTeX with clv3.cls saved in same directory):
\documentclass[shortpaper]{clv3}
\usepackage[utf8]{inputenc}
\title{Paper title}
\author{Name Surname}
\date{May 2018}
\begin{document}
\maketitle
\section{Introduction}
Some text.
\end{document}
However a comparable minimal document in R markdown, using the same cls file, fails to compile in Rstudio, with the following error: ! Package geometry Error: \paperwidth (0.0pt) too short.
My Rmd file (with clv3.cls file saved in same directory):
---
title: "Paper title"
author: "Name Surname"
documentclass: clv3
classoption: shortpaper
output: pdf_document
---
# Introduction
Some text.
Why is this error induced when I try to use this class file with an R markdown document and how may I fix it?
I've tried manually specifying a pagewidth setting in the YAML header, but I don't really know what I'm doing. This seems undesirable anyway, since the normal LaTeX document works fine without it (and surely page width is something that should be specified by a journal, not manually overwritten by an author).
I do not know where exactly the clv3.cls class and the default pandoc template clash. However, that template does so many things that do not make sense when writing with a specific style, that is best to use your own template. Using clv3-template.tex
\documentclass[shortpaper]{clv3}
\usepackage[utf8]{inputenc}
$if(title)$
\title{$title$}
$else$
\title{}
$endif$
$if(author)$
\author{$for(author)$$author$$sep$ \\ $endfor$}
$else$
\author{}
$endif$
\begin{document}
$if(title)$
\maketitle
$endif$
$body$
\end{document}
together with
---
title: "Paper title"
author: "Name Surname"
output:
pdf_document:
template:
clv3-template.tex
---
# Introduction
Some text.
should be a good starting point.
The accepted answer works perfectly for the minimal example presented. However it breaks again pretty quickly as the document is made more complex (for example, inserting a bibliography and in-text citations). I'd like to expand a little on my solution for the potential benefit of any future readers, as I found it a bit of steep learning curve:
The issue here is that Pandoc has a LaTeX template, which it uses to produce PDF documents. This is separate from a .cls class file, which defines a document class. Like Ralf Stubner says, something about my particular class file was not cooperating with Pandoc's default template. This is probably super basic and obvious to many, but I had not appreciated this extra step nor understood the distinction between these files.
If one does not wish to deal with raw LaTeX, it seems there are quite a few templates out there for various kinds of documents (see, for example, the rticle package). Using R Markdown to produce a PDF document in a particular custom format (such as for a particular journal) will require construction of a LaTeX template, however. This can be done by either of two ways:
Tinkering with an existing template until you get what you need, either by finding Pandoc's default template and starting from there (see comment by user2554330 for location) or by cloning someone else's template on Github etc.
Writing a template from scratch. In this case, Ralf Stubner's minimal example above plus this section of the Pandoc manual will be informative.
In my case, I went with the latter option. I have saved my eventual template as an R package which can be installed using devtools::install_github("JaydenM-C/CLtemplate"). So if anyone else would ever like to author a document for Computational Linguistics using this particular document style, this may save you some time.

RSweave: How to copy/paste from pdf to notepad avoiding error?

I compile a latex document which contains accents ("é" for instance) using RSweave. Then I copy the text from the pdf generated by pdflatex in a notepad. The resulting shows strange characters, for some encoding reason.
Is there a way to solve this problem?
Minimal working example
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
\SweaveOpts{concordance=FALSE}
Orçamentária \\
Tendência \\
saída \\
gestão \\
órgão \\
coração
\end{document}
When I copy this words from pdf to notepad (pdf open in Adobe Reader), I get:
Orcamentaria
Tend^encia
sada
gest~ao
org~ao
corac~ao
The real output
After search a lot, I discover the source of problem. In C:\Users...\Documents\R\R-3.1.2\share\texmf\tex\latex\Sweave.sty there is:
\ifthenelse{\boolean{Sweave#ae}}{%
\RequirePackage[T1]{fontenc}
\RequirePackage{ae}
}{}%
According to https://en.wikibooks.org/wiki/LaTeX/Fonts :
The package ae (almost European) is obsolete. It provided some workarounds for hyphenation of words with special characters. These are not necessary any more with fonts like lmodern. Using the ae package leads to text encoding problems in PDF files generated via pdflatex (e.g. text extraction and searching), besides typographic issues.
So, if I comment this line in Sweave.sty I solve the problem. Or just comment \userpackage{sweave} in .tex file.

KnitR XeTeX Beamer issue

I am trying to use a Beamer theme that requires \usepackage[no-math]{fontspec} with a KnitR document. Here is a minimal example test.Rnw:
\documentclass[handout]{beamer}
\usepackage[no-math]{fontspec}
\begin{document}
\maketitle
<<include=FALSE>>=
options(tikzDefaultEngine='xetex')
#
\begin{frame}{test}
\begin{figure}[htbp]
<<echo=FALSE, dev="tikz">>=
plot(1:100)
#
\end{figure}
\end{frame}
\end{document}
When I Knit the doucument I get:
Error in getMetricsFromLatex(TeXMetrics) :
TeX was unable to calculate metrics for the following string
or character:
m
Common reasons for failure include:
* The string contains a character which is special to LaTeX unless
escaped properly, such as % or $.
* The string makes use of LaTeX commands provided by a package and
the tikzDevice was not told to load the package.
This is an issue specifically related to the no-math option with fontspec along with dev="tikz". If I remove either of these, the document compiles fine. Any suggestions on how to get this to work? The entire purpose of using a tikz device is to allow the format of my graphics to match up with my theme that requires I am trying to use a Beamer theme that requires \usepackage[no-math]{fontspec}. Thanks!

Creating a title and numbering of sections on pdf while using R markdown with pandoc

I am using the markdown document created by R and I am trying to create the pdf file from the markdown using pandoc. Everything else works fine but I want the title of the document to appear and the numbering on the sections as in default Latex document. It seems the title defined on rmarkdown appears as a section title for the pdf.
I was able to create double spacing, enter line numbers etc by using a options.sty file. Below is the code that I used to create a pdf.
For options.sty I used:
\usepackage{setspace}
\doublespacing
\usepackage[vmargin=0.75in,hmargin=1in]{geometry}
\usepackage{lineno}
\usepackage{titlesec}
\titleformat{\section}
{\color{red}\normalfont\Large\bfseries}
{\color{red}\thesection}{1em}{}
\titleformat{\subsection}
{\color{blue}\normalfont\Large\bfseries}
{\color{blue}\thesection}{0.8em}{}
\title{Monitoring Stations}
\author{Jdbaba}
I used knitr to create the R markdown file. In the above options.sty file, it seems the program is not taking title and author part. It seems I am missing something.
The code I used to convert markdown to pdf is as follows:
pandoc -H options.sty mydata.md -o mydata.pdf
In latex document, the pdf would have the automatic numbering as well. But my pdf is missing that. Can anyone suggest how numbering can be enabled on the pdf document created using pandoc ?
Thanks.
Pandoc takes the title from a title block in the Markdown file. This is a Pandoc-specific extension to Markdown. The block should have the following format:
% title
% author(s) (separated by semicolons)
% date
So, in your case:
% Monitoring Stations
% Jdbaba
% March 6, 2013
To have the sections numbered, you'll need to run Pandoc with the --number-sections option.

Resources