es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo colocar una tabla en un archivo PDF a través de rmarkdown o formatear el texto del encabezado con mayor precisión?

Me gustaría que el código de RMarkdown a continuación (al final del post) genere páginas con una de las opciones de encabezado que se muestran abajo. El problema principal es cómo lograr el formato, ya que sé cómo obtener la fecha y los números de página.

He buscado en Google cómo colocar tablas en el encabezado, pero no he encontrado nada. También es posible formatear los datos de manera más precisa (eso sería la Opción de Encabezado 2), pero no he encontrado información sobre cómo hacerlo. He jugado con el formato, pero no hay nada que valga la pena mencionar aquí que no esté ya en el código RMarkdown que se muestra a continuación.

Pregunta: ¿es posible implementar una de las opciones de abajo? ¿Y cómo se puede hacer?

Opción de Encabezado 1: Con Tabla incluyendo formato de texto (incluso el carácter “:” si es posible, pero no es absolutamente necesario).

Enlace a la imagen

Opción de Encabezado 2: Formateado de manera similar sin la tabla, o incluso esto puede tener un marco alrededor.

Enlace a la imagen

Código para crear un PDF de ejemplo con varias páginas. Me gustaría modificar el encabezado para incluir la solución de la tabla o simplemente la solución formateada sin la tabla.

title: "Ejemplo de R Markdown con Secciones Numeradas"
output:
  bookdown::pdf_document2:
    toc: true
    toc_depth: 6
    number_sections: true
    includes:
        in_header: header.tex
header-includes:
- \usepackage{fancyhdr}
- \usepackage{lastpage}
- \pagestyle{fancy}
- \fancyhead[RO,RE]{Página \thepage\ de \pageref{LastPage}}
- \fancyhead[LO,LE]{Mensaje de Encabezado}
- \fancyfoot[LE,LO]{Mensaje de Pie de Página a la Izquierda}
- \fancyfoot[LE,RO]{Mensaje de Pie de Página a la Derecha}
\thispagestyle{fancy}

Ejemplo de R Markdown: Secciones Numeradas

R Markdown

Descripción

Texto de descripción.

\newpage

Detalles

Aquí van los detalles.

\newpage

Gráficos

Aquí van los gráficos.

\newpage

Última página.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para implementar la Opción 1 del encabezado con una tabla, podemos modificar el archivo header.tex incluido en el YAML del código RMarkdown. El archivo header.tex debería incluir el siguiente código:

    \usepackage{fancyhdr}
    \usepackage{lastpage}
    \usepackage{booktabs}
    
    \pagestyle{fancy}
    \fancyhf{}
    \rhead{Mensaje de Encabezado}
    \lfoot{Mensaje de Pie de Página a la Izquierda}
    \rfoot{Mensaje de Pie de Página a la Derecha}
    \rfoot{\thepage\ de \pageref{LastPage}}
    \renewcommand{\headrulewidth}{0pt}
    
    \fancypagestyle{plain}{%
      \fancyhf{}%
      \fancyfoot[L]{Mensaje de Pie de Página a la Izquierda}%
      \fancyfoot[R]{Mensaje de Pie de Página a la Derecha}%
      \renewcommand{\headrulewidth}{0pt}% La línea en el encabezado es invisible
    }
    
    \chead{
    \small
      \begin{tabular}{@{}c@{}}
        \textbf{Opción de Encabezado 1: Con Tabla} \\
        \midrule
        Fecha: \today \\
        \midrule
        Página \thepage\ de \pageref{LastPage} \\
      \end{tabular}
    }
    

    Este código agrega el paquete requerido booktabs para las tablas e incluye un comando chead que crea un encabezado centrado con la tabla. La tabla incluye la formatación del texto y el carácter :. La tabla está separada por el comando \midrule que crea líneas horizontales.

    Para implementar la Opción 2 del encabezado sin la tabla, podemos modificar el archivo header.tex incluido en el YAML del código RMarkdown. El archivo header.tex debería incluir el siguiente código:

    \usepackage{fancyhdr}
    \usepackage{lastpage}
    
    \pagestyle{fancy}
    \fancyhf{}
    \rhead{Mensaje de Encabezado}
    \lfoot{Mensaje de Pie de Página a la Izquierda}
    \rfoot{Mensaje de Pie de Página a la Derecha}
    \rfoot{\thepage\ de \pageref{LastPage}}
    \renewcommand{\headrulewidth}{0pt}
    
    \fancypagestyle{plain}{%
      \fancyhf{}%
      \fancyfoot[L]{Mensaje de Pie de Página a la Izquierda}%
      \fancyfoot[R]{Mensaje de Pie de Página a la Derecha}%
      \renewcommand{\headrulewidth}{0pt}% La línea en el encabezado es invisible
    }
    
    \chead{
    \small
    \textbf{Opción de Encabezado 2: Formateada de manera similar sin la Tabla} \quad Fecha: \today \quad Página \thepage\ de \pageref{LastPage}
    }
    

    Este código agrega un comando chead que crea un encabezado centrado sin la tabla. El formateo del texto se logra utilizando el comando \quad para crear espacios entre los elementos y el comando \textbf para hacer el encabezado en negrita. El encabezado también se puede poner en una caja utilizando los paquetes framed o fbox.

Comments are closed.