Partiamo

Keywords: #blog #latex #neovim #R #editor #hugo

partire Per iniziare il piccolo tour mostro lo stesso codice scritto in tre formati diversi, tutti strettamente in formato testo, e il risultato in formato pdf.

Rmarkdown (.Rmd)

---
title: "Esempio minimo
date: \today
lang: it
output: 
  pdf_document:
    latex_engine: xelatex
    keep_tex: true
tables: true    
---

This is a minimal example of using **knitr** to produce an *HTML* or *PDF* page from *Markdown*.

## R code chunks

```{r setup}
# set global chunk options: images will be 7x5 inches
library(knitr)
library(kableExtra)
knitr::opts_chunk$set(fig.width=7, fig.height=5, results = 'markup')
options(digits = 4)
```

Now we write some code chunks in this markdown file:

```{r, 'computing'}
(x <- 1+1) # a simple calculator
set.seed(123)
rnorm(5)  # boring random numbers
```

R

Questo è fondamentalmente come il prcedente. Da notare

  • il testo è preceduto da #'
  • i chunck di codice da #+ label-del-chunck
#' ---
#' title: "Esempio minimo"
#' date: \today
#' lang: it
#' output: 
#'   pdf_document:
#'     latex_engine: xelatex
#'     keep_tex: true
#' tables: true    
#'---
#'
#' This is a minimal example of using **knitr** to produce an *HTML* or *PDF* page from *Markdown*.
#'
# ## R code chunks
#'
#+ setup
library(knitr)
library(kableExtra)
knitr::opts_chunk$set(fig.width=7, fig.height=5, results = 'markup')
options(digits = 4)
#'
#'
#' Now we write some code chunks in this markdown file:
#'
#+ computing
x <- 1+1 # a simple calculator
set.seed(123)
rnorm(5)  # boring random numbers

Rnoweb (.Rnw)

Questo è molto più latexiano come approccio.

% !TeX program = xelatex
% !Rnw weave = knitr
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{italian}
\setotherlanguage{english}
  %\usepackage{mathpazo}
  %\usepackage{palatino}
\setmainfont{Optima-Regular}
%\usepackage[sc]{mathpazo}
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}
\usepackage{booktabs}
%\usepackage{longtable}
\usepackage{url}
% fissa la posizione dell'immagine
\usepackage{float}
\let\origfigure=\figure
\let\endorigfigure=\endfigure
\renewenvironment{figure}[1][]{%
  \origfigure[H]
}{%
  \endorigfigure
}

\usepackage{multicol}
\usepackage{booktabs}
\usepackage{varioref}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{siunitx}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{textcomp}
\usepackage[autostyle,italian=guillemets]{csquotes}
\usepackage[hyperref=true, style=nejm, language=auto, backend=biber, url=false, isbn=false, backref=true, sorting=none, autocite=superscript]{biblatex}
\usepackage[colorlinks, xetex]{hyperref}
\usepackage{cleveref}
\usepackage{xpatch}

\begin{document}
<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
library(kableExtra)
knitr::opts_chunk$set(fig.width=7, fig.height=5, results = 'markup')
options(digits = 4)
@

\title{Esempio minimo}
\author{}
\date{\today}
\maketitle
\tableofcontents



This is a minimal example of using \textbf{knitr} to produce an \textbf{HTML} or \textbf{PDF} page from \textit{Markdown}.

\section{R code chunks}\label{introduzione}

Now we write some code chunks in this markdown file:

<<computing>>=
x <- 1+1 # a simple calculator
set.seed(123)
rnorm(5)  # boring random numbers
@

Nota

Naturalmente è possibile preparare un file con solo codice e un file .tex in cui inserire il solo risultato del codice. Per esempio con neovim e il plugin nvim-R nella riga di comando del buffer tex si scrive Rinsert codice-R. Se si usa la funzione kable del package knitr, si può scrivere Rinsert knitr::kable(codice-da-tabellare, format = "latex", booktabs = TRUE) per avere una tabella pronta da inserire in un ambiente table.