posquit0 / Awesome-CV

:page_facing_up: Awesome CV is LaTeX template for your outstanding job application
LaTeX Project Public License v1.3c
22.73k stars 4.75k forks source link

\cvsubentry extra alignment and misplaced \omit fix #335

Open thepaoloboi opened 4 years ago

thepaoloboi commented 4 years ago

When using \cvsubentries and \cvsubentry elements, XeLaTex compiler raises the below errors:

  1. Extra alignment tab has been changed to \cr. [...] You have given more \span or & marks than there were in the preamble to the \halign or \valign now in progress. So I'll assume that you meant to type \cr instead. OverLeaf hint: You have written too many alignment tabs in a table, causing one of them to be turned into a line break. Make sure you have specified the correct number of columns in your table.

  2. Misplaced \omit. \multispan ->\omit \@multispan [...]
    I expect to see \omit only after tab marks or the \cr of an alignment. Proceed, and I'll ignore this case.

First error seems to be caused by a missing new line command inside the \cvsubentry declaration on awesome-cv.cls.

This piece of code:

\newcommand*{\cvsubentry}[4]{%
\setlength\tabcolsep{0pt}
  \setlength{\extrarowheight}{0pt}
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
    \setlength\leftskip{0.2cm}
    \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
      {\subentrydatestyle{#3}}{}
    \ifthenelse{\equal{#1}{}}
      {}
      {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\}
    \ifthenelse{\equal{#4}{}}
      {}
      {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\}
  \end{tabular*}
}

should become:

\newcommand*{\cvsubentry}[4]{%
\setlength\tabcolsep{0pt}
  \setlength{\extrarowheight}{0pt}
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
    \setlength\leftskip{0.2cm}
    \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
      {\subentrydatestyle{#3}}{} \\
    \ifthenelse{\equal{#1}{}}
      {}
      {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\}
    \ifthenelse{\equal{#4}{}}
      {}
      {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\}
  \end{tabular*}
}

Second issue, seems to be related to a problem between \ifthenelse and \multicolumn.

As stated here, \multicolumn must be the first thing TeX sees in a table cell, after expanding commands; unfortunately, the workings of \ifthenelse leave something before \multicolumn when the test is computed false.

A good solution could be to use a different test making command.