3

Is there a way to put \\ after multicolumn automatically, each time it appears in the code? Pseudocode would look like this:

\newcommand{\commandThatAddsBreaklines}
if(thereIsAMulticolumn == true)
    add '\\' after \multicolumn{}{}{a very long text that doesn´t even fit in my table}

I would like to know if it is even possible to do something like this, maybe someone has a idea. My code looks like this:

\documentclass[a4paper,12pt,oneside]{scrbook}
\usepackage[dutch]{babel}  %Quotes won't work without babel
\usepackage[utf8]{inputenc}   %This is very important!
\usepackage[T1]{fontenc}

\usepackage{graphicx}
\usepackage[pdfborder={0 0 0}, breaklinks=true, pdftex=true, raiselinks=true]{hyperref}
\usepackage{tabularx}
\newcolumntype{Y}{>{\raggedright}X}

\begin{document}
\section{Description}
\begin{tabularx}{\linewidth}{YY}\hline
\multicolumn{2}{c}{a very very very long text that doesn´t even fit in my table, so it must be a way to make the table automatically break the line}\\
\end{tabularx}
\end{document}

I am also looking for a way to fit the column into my table. It would be nice if someone could provide me some help with it, thanks in advance.

4
  • What's the advantage with respect to adding the \\ manually?
    – egreg
    Nov 22, 2012 at 14:33
  • I need to edit the .tex file from .sty and since the .tex file is generated automatically, and doesn´t have any \\ it is usefull to add some to avoid errors
    – dima
    Nov 22, 2012 at 14:42
  • I don't understand. If the automatic file generation doesn't add it, then it's the generation to be wrong. Is the code a sample of a generated file?
    – egreg
    Nov 22, 2012 at 14:57
  • The code sample is from the generated file except for the line \multicolumn{2}{c}{text}\\, in the autogenerated file the command looks like this: \multicolumn{}{}{text}, and in this case it does´t compiles. The generating of the file is done by Wiki2LaTeX extension of the MediaWiki.
    – dima
    Nov 22, 2012 at 15:08

1 Answer 1

4

enter image description here

\documentclass[a4paper,12pt,oneside]{scrbook}
\usepackage[dutch]{babel}  %Quotes won't work without babel
%\usepackage[utf8]{inputenc}   %This is very important!
\usepackage[T1]{fontenc}


\usepackage{graphicx}
\usepackage[pdfborder={0 0 0}, breaklinks=true, pdftex=true, raiselinks=true]{hyperref}
\usepackage{tabularx}
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}

\let\oldmc\multicolumn
\def\multicolumn#1#2#3{%
\oldmc{#1}{>{\hsize=\dimexpr#1\hsize+#1\tabcolsep+#1\tabcolsep-2\tabcolsep\relax\centering}X}{#3}\tabularnewline}

\begin{document}
\section{Description}

\noindent
\begin{tabularx}{\linewidth}{YY}\hline
\multicolumn{2}{c}{a very very very long text that doesn´t even fit in my table, so it must be a way to make the table automatically break the line}
\end{tabularx}
\end{document}
5
  • I only have one more question, what does this greater than symbol do in this line: \oldmc{#1}{>{\hsize=\dimexpr#1\hsize+#1\tabcolsep+#1\tabcolsep-2\tabcolsep\relax\centering}X}{#3}\tabularnewline}?
    – dima
    Nov 23, 2012 at 6:52
  • It's just array package column specifier the same as you used in your definition of Y to push those statements in to the start of the cell. Nov 23, 2012 at 9:18
  • The line with \newcolumntype was generated from a parser, so I wanted to know what this > means. Now i understand, thanks a lot.
    – dima
    Nov 23, 2012 at 10:14
  • Oh in that case you should report a bug in the generator, you'll note that I changed it to add \arraybackslash as it was it will work in all columns but the last, if use the definition og Y in your example in the last column (as you have done) then \` will mean new line in raggedright` not end of table row so you would have to end table rows with \tabularnewline rather than \\ \arraybackslash resores the meaning of \\ to its array/tabular end of line meaning. Nov 23, 2012 at 10:19
  • Good to know that, I am learning more and more...
    – dima
    Nov 23, 2012 at 10:38

You must log in to answer this question.

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