diff options
author | John MacFarlane <jgm@berkeley.edu> | 2021-06-21 18:25:36 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2021-06-21 18:25:36 -0700 |
commit | ed3974a254c3e0c4e7a34d5d25ddef90c25d2092 (patch) | |
tree | 8238a462857465f3be1f63d9f33111757f200e44 | |
parent | eee648447a05accb5680b5a1a6e69a7765af2db5 (diff) | |
download | pandoc-ed3974a254c3e0c4e7a34d5d25ddef90c25d2092.tar.gz |
LaTeX writer: always use a minipage for cells with line breaks...
if width information is available. Otherwise the way we treat them can
lead to content that overflows a cell.
Closes #7393.
-rw-r--r-- | src/Text/Pandoc/Writers/LaTeX/Table.hs | 9 | ||||
-rw-r--r-- | test/command/7272.md | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX/Table.hs b/src/Text/Pandoc/Writers/LaTeX/Table.hs index 8dc7d1162..abdc26649 100644 --- a/src/Text/Pandoc/Writers/LaTeX/Table.hs +++ b/src/Text/Pandoc/Writers/LaTeX/Table.hs @@ -26,7 +26,8 @@ import Text.DocLayout ( Doc, braces, cr, empty, hcat, hsep, isEmpty, literal, nest , text, vcat, ($$) ) import Text.Pandoc.Shared (blocksToInlines, splitBy, tshow) -import Text.Pandoc.Walk (walk) +import Text.Pandoc.Walk (walk, query) +import Data.Monoid (Any(..)) import Text.Pandoc.Writers.LaTeX.Caption (getCaption) import Text.Pandoc.Writers.LaTeX.Notes (notesToLaTeX) import Text.Pandoc.Writers.LaTeX.Types @@ -261,8 +262,12 @@ cellToLaTeX blockListToLaTeX celltype annotatedCell = do Para{} -> True Plain{} -> True _ -> False + let hasLineBreak LineBreak = Any True + hasLineBreak _ = Any False result <- - if not hasWidths || (celltype /= HeaderCell && all isPlainOrPara blocks) + if not hasWidths || (celltype /= HeaderCell + && all isPlainOrPara blocks + && not (getAny (query hasLineBreak blocks))) then blockListToLaTeX $ walk fixLineBreaks $ walk displayMathToInline blocks else do diff --git a/test/command/7272.md b/test/command/7272.md index d3a3b2137..3b9064c9c 100644 --- a/test/command/7272.md +++ b/test/command/7272.md @@ -18,7 +18,10 @@ >{\raggedright\arraybackslash}p{(\columnwidth - 0\tabcolsep) * \real{1.00}}@{}} \toprule \endhead -{\vtop{\hbox{\strut text}\hbox{\strut text2 }}} \\ +\begin{minipage}[t]{\linewidth}\raggedright +{ text\\ +text2 } +\end{minipage} \\ \bottomrule \end{longtable} ``` |