Si vous êtes un utilisateur de Word, il est maintenant possible de mettre à jour automatiquement les champs et les tables des matières et non plus devoir le faire manuellement depuis Word, à condition d’avoir Word disponible sur le PC hébergeant votre R.

Suite à une issue sur github (lien) et à d’autres demandes d’utilisateurs sur le sujet, le package “doconv” à évoluer afin de répondre à cette demande.

Prenons l’exemple d’un fichier ‘.docx’ généré depuis un document ‘R Markdown’ et le package ‘officedown’:

 title: "Exemple with references"
 output: 
     officedown::rdocx_document:
       toc: true
 ---
 
 ```{r setup, include=FALSE}
 knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)
 library(officer)
 library(officedown)
 library(ggplot2)
 library(flextable)
 ```
 
 This is `r run_word_field("DOCPROPERTY \"custom_field_value\" \\* MERGEFORMAT")`.
 
 ## Figure 
 
 ```{r}
 ggplot(iris, mapping = aes(x = Sepal.Length, y = Petal.Length)) +
   geom_point()
 ```
 
 ## Table
 
 ```{r}
 flextable(head(iris)) |> autofit()
 ```

Le document exemple.docx contiendra une table des matières et un champ nommé custom_field_value ; pour l’instant sans valeur.

Ce document est généré par pandoc et les tables des matières, les références et en général tous les champs calculés par Word ne sont pas mis à jour à moins d’une intervention manuelle par l’utilisateur. Il doit ouvrir Word et rafraichir lui même ces champs pour par exemple obtenir une table des matières avec les bonnes valeurs de titres et de numéros de pages correspondants.

Résultat sans intervention manuelle

doconv::docx_update() va permettre d’automatiser ce processus manuel et va mettre à jour le document Word.

library(officer)
library(doconv)
x <- read_docx("example.docx")
x <- set_doc_properties(
  x,
  custom_field_value = "trop cool"
)
print(x,target = "updated-example.docx")
docx_update(input = "updated-example.docx")

Le code précédent va faire correspondre une valeur au champ custom_field_value avec la fonction set_doc_properties(), il prendra la valeur “trop cool”. Ensuite, on appelle la fonction docx_update() pour mettre à jour les valeurs calculées par Word.

Le résultat updated-example.docx a ce rendu :

Result doconv-update


Suivez nous:  -  Sites recommandés: R-bloggers R weekly Twitter #rstats Jobs for R-users