Novedades en la Plantilla de Trabajos Fin de Estudios (TFE): versión 1.3

R Markdown
R
Plantilla TFE
Autor

Pedro L. Luque

Fecha de Publicación

19 septiembre 2022

A continuación se presentan las novedades principales que se han añadido a la versión 1.3 de la Plantilla de Trabajos Fin de Estudios (TFE).

1 Los sistemas de bibliografía

1.1 Método 1: El sistema de bibiografía basado en natbib

El uso del paquete LaTeX “natbib” para trabajar con la bibliografía, se activa en la cabecera “yaml” del fichero “tfe_principal.Rmd” del siguiente modo:

bibliography: ["bib/library.bib", "bib/paquetes.bib"]
metodobib: true
biblio-style: "apa-good"

output: 
  pdf_document:
    citation_package: natbib  

Se pueden hacer uso de las siguientes opciones adicionales:

bibliography: ["bib/library.bib", "bib/paquetes.bib"]
#biblio-title: "Referencias"
# metodobib -> true: natbib (descomentar: citation_package: natbib) 
#           -> false: pandoc (comentar: citation_package: natbib)
metodobib: true
#biblio-style con natbib
#natbib: plainnat, abbrvnat, unsrtnat
#natbib: chicago, apalike
#natbib: apalike2 (https://ctan.org/pkg/apalike2)
biblio-style: "apa-good"
#natbiboptions: "numbers" # "square,numbers" # ver: https://www.ctan.org/pkg/natbib
# más info: authoryear,numbers,  super, angle, sort, compress
# https://ctan.javinator9889.com/macros/latex/contrib/natbib/natnotes.pdf

Los estilos de bibliografía con “natbib” que se ha comprobado funcionan con esta plantilla al seleccionarlos con el parámetro “biblio-style” son:

Los siguientes estilos no pueden usarse con el paquete “natbib” cargado y por tanto no serían válidos los comandos de citación específicos de “natbib” (solución no recomendada para que funcionase, sería comentar la orden \usepackage{natbib} en el fichero “tfe_principal.tex” y compilar con “pdflatex”):

  • plain, alpha, abbrv, unsrt, acm, ieeetr
biblio-style: plainnat

1.2 Método 2: el sistema de bibliografía basado en pandoc-csl

bibliography: ["bib/library.bib", "bib/paquetes.bib"]
metodobib: false
csl: methods-in-ecology-and-evolution.csl      # no numera mejor en las citas
#csl: acm-sig-proceedings-long-author-list.csl  # numera peor en las citas
#csl: apa.csl  # apa.csl, ieee.csl

output: 
  pdf_document:
    #citation_package: natbib  

1.3 Método 3: el sistema de bibliografía basado en flexbib

La información sobre el paquete LaTeX “flexbib” sobre BibTeX se encuentra en: https://www.latex.um.es/retazos/leccion_15/flexbib.html. Desde aquí quiero hacer constar el agradecimiento a los creadores.

Con el paquete LaTeX “flexbib” se facilita la escritura de la bibliografía en español (opción: spanish). También lo facilita para otros idiomas: inglés (english), francés (french) y el alemán (german).

  • Manual flexbib (pdf)

    En el manual se pueden encontrar todas las opciones disponibles a partir de la página 8. Se recomienda también leer el apartado 2 “El sistema flexbib” a partir de la página 4, para conocer las características generales y opciones que este paquete LaTeX nos permite personalizar en relación con la citas de referencias y la presentación de la bibliografía.

  • Blog: cambiar el idioma de la bibliografía en LaTeX

Nota: Se ha modificado la opción de flexbib “sort&compress” por “sortcompress”, para evitar un error que se producía al transformar “pandoc” el documento.

1.3.1 Cómo usar flexbib en la plantilla

Importante. En la cabecera yaml se debe tener activo los siguientes valores:

metodobib: true

output: 
  pdf_document:
    citation_package: natbib

Si se va a usar “flexbib” se deben ajustar también los valores de: flexbib y flexbiboptions, en la cabecera “yaml” del fichero “tfe_principall.Rmd”.

Se muestran algunos ejemplos a continuación:

  • Ejemplo 1. Se eligen: spanish (bibliografía en español) y plain (bibliografía numerada)

    flexbib: true
    flexbiboptions: spanish, plain
  • Ejemplo 2. Se elige: spanish (bibliografía en español) y por defecto se utiliza referencias autor-año (bibliografía sin numerar)

    flexbib: true
    flexbiboptions: spanish
  • Ejemplo 3. Se eligen: spanish (bibliografía en español), plain (bibliografía numerada), datebegin (año en la bibliografía después del autor), sortcompress (al citar, sustituye [1,3,2] por [1-3]), nocomment y noabstract (no muestran los campos del fichero BibTeX: “comment” y “abstract”)

    flexbib: true
    flexbiboptions: spanish, plain, datebegin, sortcompress,nocomment, noabstract

1.3.2 Solución de problemas

  1. Si se cambia de método bibliográfico, se recomienda borrar previamente los ficheros con extensión: “.bbl” y “.blg”, si no se hace podría producirse errores lo que impediría la creación del fichero pdf final.

2 Simplificar cabeceras de ficheros de capítulos

La idea se pudo concretar usando la información en: Stackoverflow: “Importing common YAML in rstudio/knitr document”.

Se han creado unos ficheros cuyos nombres empiezan por “cabecera_.” que contienen información en formato: “yaml”, “tex” (latex) y “R”, de forma que los ficheros R Markdown (Rmd) que contienen la información de los distintos capítulos y apéndices tienen menos definiciones al inicio de cada uno de estos ficheros que en las versiones anteriores, lo que tiene las siguientes ventajas:

  1. Se accede rápidamente al texto-contenido del capítulo/apéndice.
  2. Permite usar el “Editor Visual de RStudio” sin que se causen errores (ver nota a continuación). Se recomienda el uso de este editor visual de RStudio, sobre todo si ha usado poco RStudio.

Nota: Se recomienda no modificar esas primeras líneas.

3 Uso de diferentes familias de fuentes

En la cabecera “yaml” del fichero “tfe_principal.Rmd” se pueden usar (por defecto: “fontfamily: lmodern”) las siguientes opciones:

  • Familia “lmodern” pero con “sans serif” (paloseco)

    paloseco: true

Nota: también se podría usar esta opción con otras fuentes, por ejemplo: “inconsolata”.

  • Familia: “helvet”, y familia matemática: “mathptmx”

    fontfamily: helvet
    fontmathfamily: mathptmx
    fontfamily: helvet
    fontfamilyoptions: scaled
    fontmathfamily: mathptmx
  • Familia: “avant”, y familia matemática: “mathptmx”

    fontfamily: avant
    fontmathfamily: mathptmx
  • Familia: “roboto”, y familia matemática: “mathptmx”

    fontfamily: roboto
    fontfamilyoptions: sfdefault   #\usepackage[sfdefault]{roboto}
    fontmathfamily: mathptmx
  • Familia: “arev”

    fontfamily: arev
  • Familia: “inconsolata”

    fontfamily: inconsolata
  • Familia: “FiraSans”, y familia matemática: “newtxsf”

    #paloseco: true # con fuente por defecto (lmodern)
    fontfamily: FiraSans
    fontfamilyoptions: "sfdefault,scaled=.85"
    negritastt: "0.85"
    fontmathfamily: newtxsf
    fontmathfamilyoptions: cmintegrals
  • Nota: la opción negritastt: "0.85" añade el manejo de las fuentes typewriter en negrita y además mejora el uso de las fuentes typewriter (o verbatim).

Se puede encontrar más información en: Github del libro: “LaTeX-Beginner”.

Algunos comandos LaTeX que permiten seleccionar fuentes diferentes con “pdflatex”.

\renewcommand{\familydefault}{sfdefault}
\usepackage{inconsolata} %buena
\usepackage{courier}

\usepackage{helvet}
\usepackage{sfmath}

\usepackage[math]{kurier}

%\usepackage{kmath}
\usepackage{kerkis}

\usepackage{concrete}
\usepackage{concmath}

\usepackage{newcent}
\usepackage{fouriernc}

\usepackage{newtxtext} % times
\usepackage{newpxmath}

\usepackage{newpxtext} % palatino
\usepackage{newpxmath}

\usepackage[light]{kpfonts}
\usepackage{cmbright}
\usepackage{arev}

\usepackage[sfdefault,scaled=.85]{FiraSans}
\usepackage[cmintegrals]{newtxsf}

% https://tex.stackexchange.com/questions/215482/how-do-i-get-texttt-with-bold-face-in-latex
\usepackage[sfdefault,scaled=0.95]{FiraSans}
\usepackage{bold-extra}
\usepackage[scaled=0.95]{beramono}
\usepackage[cmintegrals]{newtxsf}

\let\openbox\relax
\let\Bbox\relax
\usepackage{amssymb,amsmath}
%\usepackage[varqu,varl]{zi4}% inconsolata typewriter

Otras pruebas:

  • Familia: “sourcecodepro”

    fontfamily: sourcecodepro
    fontfamilyoptions: default   #\usepackage[default]{sourcecodepro}

4 Crear un documento sin capítulos

Cambiar la cabecera yaml del siguiente modo:

documentclass: article
article: true

En el fichero “tfe_principal.Rmd”, eliminar los saltos de página no adecuados, quitar la lista de tablas y/o figuras si fuera necesario, etc.

5 Otros ajustes que pueden ser útiles

5.1 Evitar que el código R fuente no sobrepase el ancho del texto

Se debe usar el siguiente parámetro en la cabecera yaml:

codigoajusta: true

5.2 Cambia el tamaño de la fuente del código en todo el fichero (echo)

Se debe usar el siguiente parámetro en la cabecera yaml (“normalsize”, “small”, “footnotesize”):

codigofuente: "footnotesize"

5.3 Cambia el tamaño de la fuente de la salida del código R en una parte del documento

Se debe usar de la siguiente manera en el texto (“normalsize”, “small”, “footnotesize”, “tiny”):


\verbatimfont{\tiny}

`r ''````{r}
summary(mtcars)
```

\verbatimfont{\normalsize}

5.4 Cambia el tamaño de la fuente del código R (echo) en una parte del documento

Se debe usar de la siguiente manera en el texto (“normalsize”, “small”, “footnotesize”, “tiny”):


\renewcommand{\CodigoFuente}{\tiny}

`r ''````{r}
# une con segmentos lineales
plot(v_y ~ v_x, type="l",col="blue")  
```

`r ''````{r}
# une con segmentos lineales y puntos
plot(v_y~v_x,type="o",col="red")  
```

\renewcommand{\CodigoFuente}{\footnotesize}

5.5 Cambiar el color del texto en teoremas

Introducir después del primer chunk del fichero “tfe_principal.Rmd” el siguiente comando LaTeX (se cambia a color negro en el modo pdf digital):

\definecolor{ocre}{RGB}{0,0,0}

5.5.1 En lugar de “Apéndice” llamarlo “Anexo”

Modificar en el fichero “tfe_principal.Rmd” las líneas que aparecen junto a la instrucción LaTeX \appendix:

\renewcommand\appendixname{Anexo}

Se podría personalizar también la numeración de los apéndices añadiendo:

\renewcommand\thechapter{\Alph{chapter}}                
\renewcommand\thesection{\Alph{chapter}.\Roman{section}} 
\setcounter{chapter}{0}

5.6 Personalizar la presentación de los capítulos

Colocando en la cabecera yaml del fichero “tfe_principal.Rmd” las líneas asociadas a la clave: “header-includes” siguiente:

link-citations: yes
header-includes:
  - \usepackage[Conny]{fncychap}
  - "% Options: Glenn, Sonny, Bjornstrup, Lenny, Conny, Reijne (estandar), Bjarne (no)"
output: 

Se usa el paquete LaTeX “fncychap” que dispone de varios formatos o estilos para la presentación de los capítulos.

5.7 Cómo evitar errores de codificación con los ficheros de la plantilla-memoria

El motivo es que algunos alumnos envían problemas indicando que no se les crea el pdf y suele estar motivado porque han introducido algunos acentos y no están escritos en la codificación utf8.

Los mensajes de error son del siguiente tipo:

/Applications/RStudio.app/Contents/MacOS/quarto/bin/tools/pandoc +RTS -K512m -RTS tfe_principal.knit.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output tfe_principal.tex --lua-filter /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /Library/Frameworks/R.framework/Versions/4.1/Resources/library/rmarkdown/rmarkdown/lua/latex-div.lua --self-contained --template latex/templateMemoriaTFE.tex --number-sections --highlight-style tango --pdf-engine pdflatex --natbib --include-before-body portadas/latex_paginatitulo_modTFE.tex 

processing file: ./capitulo05.Rmd
output file: tfe_principal.knit.md

pandoc: Cannot decode byte '\xe1': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream
Error: pandoc document conversion failed with error 1
In addition: Warning messages:
1: package 'readxl' was built under R version 4.1.2 
2: package 'ggplot2' was built under R version 4.1.2 
3: package 'nlme' was built under R version 4.1.2 
4: In pt(-abs(tVal), fDF) : NaNs produced
Execution halted

Se puede resolver ejecutando en la consola de RStudio el siguiente código (asegurarse de que el fichero “funciones_detectar_problemasCodificacion.R” está en la misma carpeta que esté el fichero “tfe_principal.Rmd”):

source("funciones_detectar_problemasCodificacion.R")
vficheros01 = c("portadas/latex_paginatitulo_modTFE.tex",
                "bib/library.bib","bib/paquetes.bib",
                "prologo.Rmd","resumen.Rmd","abstract.Rmd",
                "capitulo01.Rmd","capitulo02.Rmd", "capitulo03.Rmd",
                "capitulo04.Rmd")
# func_utf8_corregir_problemas_ficheros(vficheros01, sobreescribir = FALSE)
func_utf8_corregir_problemas_ficheros(vficheros01, sobreescribir = TRUE)

6 Referencias

6.1 Ficheros pdf resultado de diferentes variantes de la plantilla

6.2 Sobre Pandoc

6.3 Sobre fuentes

6.4 Información sobre LaTeX