aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-06-21 18:25:36 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2021-06-21 18:25:36 -0700
commited3974a254c3e0c4e7a34d5d25ddef90c25d2092 (patch)
tree8238a462857465f3be1f63d9f33111757f200e44
parenteee648447a05accb5680b5a1a6e69a7765af2db5 (diff)
downloadpandoc-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.hs9
-rw-r--r--test/command/7272.md5
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}
```