Subrayar en RMarkdown a Microsoft Word

Sep 02 2020

Estoy tratando de averiguar en RMarkdown cómo subrayar algunas palabras. Si estoy tejiendo en HTML, puedo hacer esto:

<u>These words are underlined</u>

Lo que funciona bien en ese caso. Pero el subrayado no persiste cuando tejo con Microsoft Word. No creo que se hayan realizado cambios en RMarkdown para hacerlo de forma nativa, como los comandos para negrita y cursiva. ¿Alguna sugerencia?

Gracias

Respuestas

1 SteffenMoritz Sep 02 2020 at 05:25

Intenté todo lo que me vino a la mente, parece que no es posible (sería genial escuchar sobre soluciones que realmente funcionan)

Intenté lo siguiente:

<u> text </u>
<ins> text </ins>
<span style="text-decoration:underline"> text </span>
$\text{\underline{LaTeX makes it possible}}$
$\underline{LaTeX makes it possible}$

Si bien la mayoría de estos funcionaron para html_document, ninguno realmente funcionó para Rmarkdown to Word.

  1. <u> - la solución obvia - no funcionó.

  2. <ins> que también se sugiere a menudo - no funcionó.

  3. html5 marcado - no funcionó

  4. LaTeX - no funcionó

Bien podría ser que esto simplemente no sea posible.

1 stefan Oct 01 2020 at 17:01

Por si sirve de algo ... (;. Por lo que yo entiendo, esto no es posible mediante el uso de etiquetas HTML La razón por la cual las etiquetas HTML de trabajo cuando se representa a HTML es que el código HTML no se abordó por rmarkdown, knitro pandocy simplemente pasó hasta el documento HTML final como texto. En el caso de HTML, el navegador sabe qué hacer con este "texto", pero en Word o Latex es simplemente texto que se mostrará tal cual.

Sin embargo, para la salida de Word, puede echar un vistazo al paquete officedown que agrega algunas funcionalidades adicionales de Word a rmarkdowntravés del paquete de oficial oficial , por ejemplo, el siguiente ejemplo RMD muestra cómo obtener texto subrayado en Word:

---
title: "officedown template"
output: officedown::rdocx_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.cap = TRUE)
library(officedown)
library(officer)

ft <- fp_text(underlined = TRUE)
```


This document presents most of the features of the package `r ftext("officedown", ft)`. 

fry Oct 05 2020 at 21:33

El problema tiene dos partes:
1.) Hacer que Rmarkdown / pandoc represente el html al tejer en un archivo de Word. Cómo lograr esto se ha explicado aquí: etiquetas HTML en Rmarkdown al documento de Word por el usuario @tarleb (considere votar esa respuesta, ya que es la base de la mía).
2.) <u>para subrayar ha quedado más o menos en desuso. Sin embargo, las <u>etiquetas simplemente tienen que estar envueltas dentro de un <p>para que funcionen.

Entonces esto debería lograr lo que quieres:

---
output:
  word_document:
    md_extensions: +raw_html-markdown_in_html_blocks
    pandoc_args: ['--lua-filter', 'read_html.lua']
---

<p><u>This text will be underlined.</u> This not anymore</p>

<u>But this will not.</u>

<p style="text-decoration: underline;">Neither will this.</p>

con un archivo read_html.luaen el mismo directorio con este contenido:

function RawBlock (raw)
  if raw.format:match 'html' and not FORMAT:match 'html' then
    return pandoc.read(raw.text, raw.format).blocks
  end
end
CyrusYip Oct 13 2020 at 20:25

Una solución

RMarkdown se basa en Pandoc, y Markdown de Pandoc no admite de forma nativa el subrayado. El subrayado en Markdown de Pandoc se implementa mediante una etiqueta HTML <u>...</u>. Sin embargo, <u>...</u>no se puede convertir en texto subrayado en docx o pdf (probado con pandoc 2.10.1). Una solución alternativa es modificar el estilo del texto en MS Word.

  1. Elija un sustituto de <u>...</u>, como ***...***.

    ---
    output:
      word_document: default
    ---
    
    This is a regular paragraph.
    
    ***This paragraph is bold italic at first. It will be underlined later.***
    
  2. Teje el documento Rmarkdown en docx

  3. Reemplace el texto en negrita y cursiva con texto subrayado en Word.

    • Presione Ctrl + H.
    • Establezca el formato de texto en Format > Font.
      • Busque texto en negrita cursiva .
      • Reemplazar con texto de subrayado regular.
    • prensa Replace All
  4. Si los ha usado <u>...</u>, reemplácelos con ***...***.

    • Presione Ctrl + F.

    • marque la opción regex.

    • reemplazar <u>(.+)<\/u>con ***$1***.

    • Presione Alljunto a Replace.

    • Regrese al paso 1 y al paso 2.

Consejo

Recomiendo ceñirse a la sintaxis nativa de Rmarkdown y Markdown de Pandoc. Aunque la sintaxis es limitada, funciona bien con diferentes formatos de salida. ¡La sintaxis limitada es el poder de Markdown! Es tan simple que se puede convertir a muchos formatos de salida diferentes. También recomiendo seguir el concepto de separación de contenido y estilo . Me ahorra formatear contenidos repetidamente.