Sottolineato in RMarkdown su Microsoft Word

Sep 02 2020

Sto cercando di capire in RMarkdown come sottolineare alcune parole. Se sto lavorando a maglia in HTML posso farlo:

<u>These words are underlined</u>

Che funziona bene in quel caso. Ma la sottolineatura non è persistente quando lavoro a maglia con Microsoft Word. Non credo che siano state apportate modifiche a RMarkdown per farlo in modo nativo, come i comandi per grassetto e corsivo. Eventuali suggerimenti?

Grazie

Risposte

1 SteffenMoritz Sep 02 2020 at 05:25

Ho appena provato tutto ciò che mi è venuto in mente - sembra non essere possibile (sarebbe bello sapere di soluzioni effettivamente funzionanti)

Ho provato quanto segue:

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

Sebbene la maggior parte di questi funzionasse per html_document, nessuno ha funzionato davvero per Rmarkdown in Word.

  1. <u> - la soluzione ovvia - non ha funzionato.

  2. <ins> che è anche spesso suggerito - non ha funzionato.

  3. html5 markup - non ha funzionato

  4. LaTeX - non ha funzionato

Potrebbe anche essere che questo non sia possibile.

1 stefan Oct 01 2020 at 17:01

Per quel che vale ... (;. Per quanto ho capito, questo non è possibile, utilizzando i tag HTML Il motivo per cui i tag HTML lavoro durante il rendering di HTML è che il codice HTML non è toccato da rmarkdown, knitro pandoce semplicemente passato fino al documento HTML finale come testo. In caso di HTML il browser sa cosa fare con questo "testo", ma in Word o Latex è semplicemente testo che verrà visualizzato così com'è.

Tuttavia, per l'output di Word potresti dare un'occhiata al pacchetto officedown che aggiunge alcune funzionalità aggiuntive di Word rmarkdowntramite il pacchetto ufficiale , ad esempio il seguente esempio RMD mostra come ottenere il testo sottolineato in 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

Il problema ha due parti:
1.) Ottenere Rmarkdown / pandoc per rendere l'html quando si lavora a maglia su un file word. Come ottenere ciò è stato spiegato qui: tag HTML in Rmarkdown in un documento word dall'utente @tarleb (si prega di considerare l'upvoting di quella risposta in quanto è la base per la mia).
2.) <u>per la sottolineatura è stato più o meno deprecato. Tuttavia, i <u>tag devono semplicemente essere inseriti in a <p>per funzionare.

Quindi questo dovrebbe ottenere ciò che desideri:

---
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 file read_html.luanella stessa directory con questo contenuto:

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 soluzione alternativa

RMarkdown è basato su Pandoc e Markdown di Pandoc non supporta nativamente la sottolineatura. La sottolineatura nel Markdown di Pandoc è implementata dal tag HTML <u>...</u>. Tuttavia, <u>...</u>non può essere convertito in testo sottolineato in docx o pdf (testato con pandoc 2.10.1). Una soluzione alternativa è modificare lo stile del testo in MS Word.

  1. Scegli un sostituto per <u>...</u>, ad esempio ***...***.

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

  3. Sostituisci il testo in grassetto corsivo con il testo sottolineato in Word.

    • Premere Ctrl + H.
    • Imposta il formato del testo in Format > Font.
      • Trova testo in grassetto corsivo .
      • Sostituisci con testo sottolineato normale.
    • stampa Replace All
  4. Se li hai usati <u>...</u>, sostituiscili con ***...***.

    • Premere Ctrl + F.

    • controlla l'opzione regex.

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

    • Premere Allaccanto a Replace.

    • Tornare al passaggio 1 e al passaggio 2.

Consigli

Consiglio di attenersi alla sintassi nativa di Rmarkdown e Pandoc's Markdown. Sebbene la sintassi sia limitata, funziona bene con diversi formati di output. La sintassi limitata è il potere di Markdown! È così semplice che può essere convertito in molti formati di output diversi. Consiglio anche di seguire il concetto di separazione di contenuto e stile . Mi salva dalla formattazione ripetuta dei contenuti.