jgm/pandoc

[latex] Column spacing is incorrect (\tabcolsep) [2.11.2.0]

gabyx opened this issue · 2 comments

gabyx commented

Pandoc generates latex column spacing in latex output for a nCols=3-column like this:

IMO: \columnwidth - 2\tabcolsep) * \real{0.41} should be \columnwidth - (2*(nCols - 1))\tabcolsep) * \real{0.41}
Latex inserts for each column a \tabcolsep at the beginning and the end. So the space between two adjacent columns is 2\tabcolsep.

Bonus: It might be nice, to put the format (\columnwidth - 2\tabcolsep) * \real{0.30}}\raggedright directly into the column. e.g. (also removing unnecessary minipage if possible, might still stay...)

\begin{longtable}[]{@{}>{\raggedright}p{(\columnwidth - 2\tabcolsep) * \real{0.30}}ll@{}}

Test:

+----------------------------+---------------------------------------+----------------------------+
| A                          | B                                     | A                          |
+============================+=======================================+============================+
| sdasdasda                  | asdasdasdasd                          | sdasdasda                  |
|                            |                                       |                            |
+----------------------------+---------------------------------------+----------------------------+

Table: Title
pandoc -f markdown -t latex Test.md
\begin{longtable}[]{@{}lll@{}}
\caption{Title}\tabularnewline
\toprule
\begin{minipage}[b]{(\columnwidth - 2\tabcolsep) * \real{0.30}}\raggedright
A\strut
\end{minipage} &
\begin{minipage}[b]{(\columnwidth - 2\tabcolsep) * \real{0.41}}\raggedright
B\strut
\end{minipage} &
\begin{minipage}[b]{(\columnwidth - 2\tabcolsep) * \real{0.30}}\raggedright
A\strut
\end{minipage}\tabularnewline
\midrule
\endfirsthead
\toprule
\begin{minipage}[b]{(\columnwidth - 2\tabcolsep) * \real{0.30}}\raggedright
A\strut
\end{minipage} &
\begin{minipage}[b]{(\columnwidth - 2\tabcolsep) * \real{0.41}}\raggedright
A\strut
\end{minipage}\tabularnewline
\midrule
\endhead
\begin{minipage}[t]{(\columnwidth - 2\tabcolsep) * \real{0.30}}\raggedright
sdasdasda\strut
\end{minipage} &
\begin{minipage}[t]{(\columnwidth - 2\tabcolsep) * \real{0.41}}\raggedright
asdasdasdasd\strut
\end{minipage} &
\begin{minipage}[t]{(\columnwidth - 2\tabcolsep) * \real{0.30}}\raggedright
sdasdasda\strut
\end{minipage}\tabularnewline
\bottomrule
\end{longtable}
jgm commented

I've tried to implement the strategy recommended in the stackexchange post you linked to in the other issue. Minipages are only used when necessary, and width and alignment information is put in the column descriptors at the outset.
This gives nicer latex output, at least.

gabyx commented

This is awesome! Thanks a lot John!