3

Assume I have a text with double spacing. Now to visualize table cell wrap (automated table cell wrap is not possible in Latex as far as I know), I want to space this "cell wrap" with single spacing. "Real new lines" of the table still keep double spacing ("the default" eg defined in class).

How to do this? I tried setting \singlespacing within the table. However this does not work (complaining about missing endGroup).

I found out how to turn the whole table to singlespacing (bringing this singlespacing group outside the table), however I still want to use doublespacing for 'new table lines'.

PS: I do not want a line to visualize breaks in a table.

Screenshot and MWE attached:

enter image description here

MWE

\documentclass{article} 
\usepackage{setspace}
\usepackage{booktabs}
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
    \begin{tabular}{ll}
        \toprule
        \textbf{Key} & \textbf{Value} \\
        \midrule
        Category & Line1 \\
        LongLabel:  & Line2 \\
        Category2: & Line1 \\
                  & Line2 \\
        \bottomrule
    \end{tabular}
\end{document}
1
  • Thanks, however a changed version from Steven below is simpler (\begin(singlespacing) <table with [1em] breaks> \end(singlespacing))
    – robert
    Aug 4, 2015 at 18:59

2 Answers 2

2

You can define command to be added before and after environment definitions so you can manually add \begin{singlespace} before your \begin{tabular} and \end{singlespace} after your \end{tabular}.

Alternatively, using the etoolbox package, you can add a couple of lines in your preamble that will do this for you every time you add a table. You can then specify the spacing by hand for the one you want to be bigger with the optional \\[height]:

\documentclass{article} 
\usepackage{setspace}
\usepackage{booktabs}

\usepackage{etoolbox}
\BeforeBeginEnvironment{tabular}{\begin{singlespace}}
\AfterEndEnvironment{tabular}{\end{singlespace}}

\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
    \begin{tabular}{ll}
        \toprule
        \textbf{Key} & \textbf{Value} \\
        \midrule
        Category & Line1 \\
        LongLabel:  & Line2 \\[1em]
        Category2: & Line1 \\
                  & Line2 \\
        \bottomrule
    \end{tabular}
\end{document}

2
  • Thanks I implemted this as (\begin(singlespacing) <table with [1em] breaks> \end(singlespacing))
    – robert
    Aug 4, 2015 at 18:59
  • Unless you only have one table in your document, it might be easier to use the preamble version. Tables look a lot nicer in singlespace mode (although this may be a personal preference). Additionally, since you are using booktabs, the package defines the command \addlinespace which you can insert before (or after) any row in a table. The default spacing is a lot more appropriate that my random 1em so you might want to give that a try.
    – ArTourter
    Aug 4, 2015 at 23:39
0

While the easiest modification to the OP's MWE would be to add [-10pt] to the end of the two Line1 \\ lines, here is an alternative...

One could use stacks.

Case 1: If the stacks are limited to two rows...

\documentclass{article} 
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{stackengine}
\renewcommand\stacktype{L}% LONG STACKS ARE THE DEFAULT
\renewcommand\stackalignment{l}% LEFT ALIGNED ARE THE DEFAULT
\setstackgap{L}{11pt}% THIS IS THE VERTICAL BASELINESKIP IN LONG STACKS
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
    \begin{tabular}{ll}
        \toprule
        \textbf{Key} & \textbf{Value} \\
        \midrule
        \stackunder{Category}{Longlabel} & \stackunder{Line1}{Line2} \\
        Category2: & \stackunder{Line1}{Line2} \\
        \bottomrule
    \end{tabular}
\end{document}

enter image description here


Case 2: If the entries were many-lined, then this alternate syntax would facilitate things:

\documentclass{article} 
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{stackengine}
\setstackEOL{\#}% LINE SEPARATOR IN STACK (\\ CONFLICTS WITH TABULAR USE)
\renewcommand\stacktype{L}% LONG STACKS ARE THE DEFAULT
\setstackgap{L}{11pt}% THIS IS THE VERTICAL BASELINESKIP IN LONG STACKS
\begin{document}
\doublespacing
\section{Text}
Test2\\
Test1
\section{Table}
    \begin{tabular}{ll}
        \toprule
        \textbf{Key} & \textbf{Value} \\
        \midrule
        \Longunderstack[l]{Category\# Longlabel\# Longer Label} & 
           \Longunderstack[l]{Line1\# Line2} \\
        Category2: & \Longunderstack[l]{Line 1\# Line 2\# ...\# Line 13} \\
        \bottomrule
    \end{tabular}
\end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .