Souligner dans RMarkdown vers Microsoft Word

Sep 02 2020

J'essaie de comprendre dans RMarkdown comment souligner certains mots. Si je tricote en HTML, je peux le faire:

<u>These words are underlined</u>

Ce qui fonctionne bien dans ce cas. Mais le soulignement n'est pas persistant lorsque je tricote avec Microsoft Word. Je ne crois pas que des changements aient été apportés à RMarkdown pour le faire nativement, comme les commandes pour gras et italique. Aucune suggestion?

Merci

Réponses

1 SteffenMoritz Sep 02 2020 at 05:25

J'ai juste essayé tout ce qui me venait à l'esprit - cela semble impossible (ce serait bien d'entendre parler de solutions réellement efficaces)

J'ai essayé ce qui suit:

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

Bien que la plupart d'entre eux aient fonctionné pour html_document - aucun n'a vraiment fonctionné pour Rmarkdown to Word.

  1. <u> - la solution évidente - n'a pas fonctionné.

  2. <ins> ce qui est également souvent suggéré - n'a pas fonctionné.

  3. html5 balisage - n'a pas fonctionné

  4. LaTeX - n'a pas marché

Peut-être que ce n'est tout simplement pas possible.

1 stefan Oct 01 2020 at 17:01

Pour ce que ça vaut ... (; Autant que je sache, ce n'est pas possible en utilisant des balises HTML. La raison pour laquelle les balises HTML fonctionnent lors du rendu en HTML est que le code HTML n'est pas touché par rmarkdown, knitrou pandocsimplement passé jusqu'au document HTML final sous forme de texte. Dans le cas du HTML, le navigateur sait quoi faire avec ce "texte". Mais dans Word ou Latex, c'est simplement du texte qui sera affiché tel quel.

Cependant, pour la sortie Word, vous pouvez consulter le package officedown qui ajoute des fonctionnalités Word supplémentaires rmarkdownvia le package Officer Officer , par exemple, l'exemple suivant RMD montre comment obtenir du texte souligné dans 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

Le problème se compose de deux parties:
1.) Obtenir Rmarkdown / pandoc pour rendre le HTML lors du tricotage dans un fichier Word. Comment y parvenir a été expliqué ici: Balises HTML dans Rmarkdown vers document Word par l'utilisateur @tarleb (veuillez envisager de voter pour cette réponse car c'est la base de la mienne).
2.) <u>pour le soulignement est plus ou moins obsolète. Cependant, les <u>balises doivent simplement être enveloppées dans un <p>pour fonctionner.

Donc, cela devrait atteindre ce que vous voulez:

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

avec un fichier read_html.luadans le même répertoire avec ce contenu:

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

Une solution de contournement

RMarkdown est basé sur Pandoc et le Markdown de Pandoc ne prend pas en charge nativement le soulignement. Le soulignement dans le Markdown de Pandoc est implémenté par une balise HTML <u>...</u>. Cependant, <u>...</u>ne peut pas être converti en texte souligné dans docx ou pdf (testé avec pandoc 2.10.1). Une solution de contournement consiste à modifier le style de texte dans MS Word.

  1. Choisissez un substitut pour <u>...</u>, tel que ***...***.

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

  3. Remplacer le texte en italique gras avec du texte souligné dans Word.

    • Appuyez sur Ctrl + H.
    • Définissez le format de texte dans Format > Font.
      • Rechercher du texte italique gras .
      • Remplacez par du texte souligné normal.
    • presse Replace All
  4. Si vous en avez déjà utilisé <u>...</u>, remplacez-les par ***...***.

    • Appuyez sur Ctrl + F.

    • cochez l'option regex.

    • remplacer <u>(.+)<\/u>par ***$1***.

    • Appuyez sur à Allcôté de Replace.

    • Revenez aux étapes 1 et 2.

Conseil

Je recommande de s'en tenir à la syntaxe native de Rmarkdown et de Pandoc's Markdown. Bien que la syntaxe soit limitée, elle fonctionne bien avec différents formats de sortie. La syntaxe limitée est la puissance de Markdown! Il est si simple qu'il peut être converti en de nombreux formats de sortie différents. Je recommande également de suivre le concept de séparation du contenu et du style . Cela m'évite de formater le contenu à plusieurs reprises.