diff --git a/src/printbox-md/PrintBox_md.ml b/src/printbox-md/PrintBox_md.ml
index f45533a..14ebc06 100644
--- a/src/printbox-md/PrintBox_md.ml
+++ b/src/printbox-md/PrintBox_md.ml
@@ -167,8 +167,11 @@ let rec multiline_heuristic c b =
let rec line_of_length_heuristic_exn c b =
match B.view b with
| B.Empty | B.Text {l=[]; _} -> 0
- | B.Text {l=[s]; _} ->
- if String.contains s '\n' then raise Not_found else String.length s
+ | B.Text {l=[s]; style} ->
+ let from_bold = if style.B.Style.bold then 4 else 0 in
+ let from_code =
+ if style.B.Style.preformatted then if String.contains s '`' then 6 else 2 else 0 in
+ if String.contains s '\n' then raise Not_found else String.length s + from_bold + from_code
| B.Text _ -> raise Not_found
| B.Frame _ when c.Config.frames = `As_table -> raise Not_found
| B.Frame b ->
@@ -292,7 +295,8 @@ let pp c out b =
(Array.map (fun _ -> 0) rows.(0)) rows in
let n_rows = Array.length rows and n_cols = Array.length rows.(0) in
Array.iteri (fun i header ->
- loop ~no_block:true ~no_md ~prefix:"" @@ remove_bold header;
+ let header = remove_bold header in
+ loop ~no_block:true ~no_md ~prefix:"" header;
if i < n_cols - 1 then
let len = line_of_length_heuristic_exn c header in
fprintf out "%s|" (String.make (max 0 @@ lengths.(i) - len) ' ')
diff --git a/src/printbox-md/README.md b/src/printbox-md/README.md
index 1f3e30d..f4db709 100644
--- a/src/printbox-md/README.md
+++ b/src/printbox-md/README.md
@@ -136,10 +136,10 @@ Trees are rendered as:
There is a special case carved out for Markdown syntax tables.
-Header|cells |[must be]|bold.
-------|---------|---------|-----------------
-Rows |[must be]|single |line.
-[Only]|then |**we get** |a Markdown table.
+Header |cells |[must be] |bold.
+----------|---------|-------------|-----------------
+Rows |[must be]|single |line.
+[Only] |then |**we get** |a Markdown table.
diff --git a/test/test_md.expected b/test/test_md.expected
index 9f02e8c..936177c 100644
--- a/test/test_md.expected
+++ b/test/test_md.expected
@@ -61,14 +61,14 @@ Test default:
> >
> >
> >
-- header 1 |header 2 |[header 3]
- ----------|----------|----------
- cell 1.1 |[cell 1.2]|cell 1.3
- [cell 2.1]|cell 2.2 |**cell 2.3**
-- > header 1 |header 2 |[header 3]
- > ----------|----------|----------
- > cell 1.1 |[cell 1.2]|cell 1.3
- > [cell 2.1]|cell 2.2 |**cell 2.3**
+- header 1 |header 2 |[header 3]
+ ------------|------------|--------------
+ cell 1.1 |[cell 1.2] |cell 1.3
+ [cell 2.1] |cell 2.2 |**cell 2.3**
+- > header 1 |header 2 |[header 3]
+ > ------------|------------|--------------
+ > cell 1.1 |[cell 1.2] |cell 1.3
+ > [cell 2.1] |cell 2.2 |**cell 2.3**
Test uniform unfolded:
@@ -262,14 +262,14 @@ Test foldable:
> >
> >
> >
-- header 1 |header 2 |[header 3]
- ----------|----------|----------
- cell 1.1 |[cell 1.2]|cell 1.3
- [cell 2.1]|cell 2.2 |**cell 2.3**
-- > header 1 |header 2 |[header 3]
- > ----------|----------|----------
- > cell 1.1 |[cell 1.2]|cell 1.3
- > [cell 2.1]|cell 2.2 |**cell 2.3**
+- header 1 |header 2 |[header 3]
+ ------------|------------|--------------
+ cell 1.1 |[cell 1.2] |cell 1.3
+ [cell 2.1] |cell 2.2 |**cell 2.3**
+- > header 1 |header 2 |[header 3]
+ > ------------|------------|--------------
+ > cell 1.1 |[cell 1.2] |cell 1.3
+ > [cell 2.1] |cell 2.2 |**cell 2.3**
diff --git a/test/test_md.expected.md b/test/test_md.expected.md
index 9f02e8c..936177c 100644
--- a/test/test_md.expected.md
+++ b/test/test_md.expected.md
@@ -61,14 +61,14 @@ Test default:
> >
> >
> >
-- header 1 |header 2 |[header 3]
- ----------|----------|----------
- cell 1.1 |[cell 1.2]|cell 1.3
- [cell 2.1]|cell 2.2 |**cell 2.3**
-- > header 1 |header 2 |[header 3]
- > ----------|----------|----------
- > cell 1.1 |[cell 1.2]|cell 1.3
- > [cell 2.1]|cell 2.2 |**cell 2.3**
+- header 1 |header 2 |[header 3]
+ ------------|------------|--------------
+ cell 1.1 |[cell 1.2] |cell 1.3
+ [cell 2.1] |cell 2.2 |**cell 2.3**
+- > header 1 |header 2 |[header 3]
+ > ------------|------------|--------------
+ > cell 1.1 |[cell 1.2] |cell 1.3
+ > [cell 2.1] |cell 2.2 |**cell 2.3**
Test uniform unfolded:
@@ -262,14 +262,14 @@ Test foldable:
> >
> >
> >
-- header 1 |header 2 |[header 3]
- ----------|----------|----------
- cell 1.1 |[cell 1.2]|cell 1.3
- [cell 2.1]|cell 2.2 |**cell 2.3**
-- > header 1 |header 2 |[header 3]
- > ----------|----------|----------
- > cell 1.1 |[cell 1.2]|cell 1.3
- > [cell 2.1]|cell 2.2 |**cell 2.3**
+- header 1 |header 2 |[header 3]
+ ------------|------------|--------------
+ cell 1.1 |[cell 1.2] |cell 1.3
+ [cell 2.1] |cell 2.2 |**cell 2.3**
+- > header 1 |header 2 |[header 3]
+ > ------------|------------|--------------
+ > cell 1.1 |[cell 1.2] |cell 1.3
+ > [cell 2.1] |cell 2.2 |**cell 2.3**