diff --git a/ivette/src/frama-c/richtext.tsx b/ivette/src/frama-c/richtext.tsx
index 3ce352526b6c67f6ae1bad8eb14bff4e097a734e..813737c792e21cc1aaa3f5e59314bddbe0d0041d 100644
--- a/ivette/src/frama-c/richtext.tsx
+++ b/ivette/src/frama-c/richtext.tsx
@@ -54,16 +54,14 @@ export function printTextWithTags(
 ): void {
   if (Array.isArray(text)) {
     let marker = false;
-    const tag = text.shift();
-    if (tag) {
-      if (Array.isArray(tag)) {
-        text.unshift(tag);
-      } else {
-        buffer.openTextMarker({ id: tag, ...options ?? {} });
-        marker = true;
-      }
+    const tag = text[0];
+    if (typeof (tag) === 'string') {
+      buffer.openTextMarker({ id: tag, ...options ?? {} });
+      marker = true;
+    }
+    for (let k = marker ? 1 : 0; k < text.length; k++) {
+      printTextWithTags(buffer, text[k], options);
     }
-    text.forEach((txt) => printTextWithTags(buffer, txt, options));
     if (marker) {
       marker = false;
       buffer.closeTextMarker();