Mehrere Tabularx-Tabellen ausrichten

Mehrere Tabularx-Tabellen ausrichten

versuche meinen Lebenslauf hier mit Latex zu erstellen. Ich habe eine Vorlage gefunden,https://github.com/btskinner/tex_cv/blob/master/cv.tex. Was ich nicht verstehe, ist, warum im folgenden Beispiel die beiden Tabellen nicht ausgerichtet sind, obwohl der Code sie meines Wissens ausrichten sollte? Bei mir wird es so kompiliert:

Bildbeschreibung hier eingeben

Wie bekomme ich 2020 & XXXX sowie „Etwas, irgendwo“ & Test in eine Reihe? Danke!

\documentclass[11pt]{article}
\newcommand{\recentyear}{1900}  % artificially low year to include everything

% ------------------------------------------------------------------------------
% HEADER STUFF (CAN LEAVE ALONE UNLESS YOU WANT TO PERSONALIZE)
% ------------------------------------------------------------------------------

% -------------------------------
% Packages
% -------------------------------

\usepackage[margin=1in]{geometry} % for margins
\usepackage[american]{babel}      % for language

      % for reference sections


\usepackage{titlesec}             % to adjust section headers
\usepackage{tabularx}             % for fluid tables

% -------------------------------
% Macros


\newcommand{\RR}{\raggedright\arraybackslash} % left justified
\newcommand{\RL}{\raggedleft\arraybackslash}  % right justified

% for tables to keep consistent alignment across sections
\newcolumntype{\twocols}{>{\RR}p{1.25in}>{\RR}X}
\newcolumntype{\threecols}{>{\RR}p{1.25in}>{\RR}X>{\RL}p{1in}}

\begin{document}

\section*{Education}
\begin{center}
    \vspace{-1.5em}
    \rule{\textwidth}{0.5pt}  
\end{center}

\begin{tabularx}{\linewidth}{\threecols}
 2020 (expected) &Something, somewhere & Ph.D. \\ % or YYYY (expected)
 
\end{tabularx}


\section*{Grants and Scholarships}
\begin{center}
    \vspace{-1.5em}
    \rule{\textwidth}{0.5pt}  
\end{center}
\begin{tabularx}{\linewidth}{\threecols}
    YYYY & test & bb \\
    YYYY - YYYY & Fellowship & \$ AMOUNT \\ % if normal in your field
    
\end{tabularx}  
\end{document}

Antwort1

Ich würde Makros verwenden und kein tabularx:

\documentclass[11pt]{article}
\usepackage{array}
% -------------------------------
% Packages
% -------------------------------

\usepackage[margin=1in]{geometry} % for margins
\usepackage[american]{babel}      % for language

      % for reference sections


\usepackage{titlesec}             % to adjust section headers
\usepackage{tabularx}             % for fluid tables

\newcommand{\recentyear}{1900}  % artificially low year to include everything

\titleformat{\section}
 {\bfseries\Large}
 {}% no number
 {0pt}% no space
 {}% the title
 [\titlerule]

% ------------------------------------------------------------------------------
% HEADER STUFF (CAN LEAVE ALONE UNLESS YOU WANT TO PERSONALIZE)
% ------------------------------------------------------------------------------


% -------------------------------
% Macros

\newcommand{\twocolsection}[2]{%
  \section{#1}
  \begin{tabular}[t]{
    @{}
    wl{1.25in}
    >{\raggedright\arraybackslash}p{\dimexpr\textwidth-1.25in-2\tabcolsep}
    @{}
  }
  #2
  \end{tabular}\par
}
\newcommand{\threecolsection}[2]{%
  \section{#1}
  \begin{tabular}[t]{
    @{}
    wl{1.25in}
    >{\raggedright\arraybackslash}p{\dimexpr\textwidth-2.25in-4\tabcolsep}
    wr{1in}
    @{}
  }
  #2
  \end{tabular}\par
}

\begin{document}

\threecolsection{Education}{
 2020 (expected) &Something, somewhere & Ph.D. \\ % or YYYY (expected)
}

\threecolsection{Grants and Scholarships}{
    YYYY & test & bb \\
    YYYY - YYYY & Fellowship & \$ AMOUNT \\ % if normal in your field
}

\end{document}

Bildbeschreibung hier eingeben

Sie können die Breite der ersten und letzten Spalte parametrisieren, falls die Daten für den jeweiligen Lebenslauf nicht passen.

So besteht nicht die Gefahr, dass sich das tabularLogo vom Titel löst.


Eine ausgefeiltere Version, bei der die Spaltenbreiten (erste und dritte) parametrisiert sind, sodass Sie ihre Größe an der entsprechenden Stelle in der Präambel ändern können. Außerdem haben \twocolsectionund ein optionales Argument, das (Standard) oder \threecolsectionsein sollte , um die Linksbündigung (rechtsbündig) oder Blocksatz in der Hauptspalte anzugeben.LJ

\documentclass[11pt]{article}

\usepackage[margin=1in]{geometry} % for margins
\usepackage[american]{babel}      % for language
\usepackage{titlesec}             % to adjust section headers
\usepackage{array}

% customization of sections

\titleformat{\section}
 {\bfseries\Large}
 {}% no number
 {0pt}% no space
 {}% the title
 [\titlerule]

% main macros

\newlength{\firstcol}
\newlength{\thirdcol}

% helper column types
\newcolumntype{L}[2]{%
  >{\raggedright\arraybackslash}p{\dimexpr\textwidth-(#1)-#2\tabcolsep\relax}%
}
\newcolumntype{J}[2]{%
  p{\dimexpr\textwidth-(#1)-#2\tabcolsep\relax}%
}

\newcommand{\twocolsection}[3][L]{%
  \section{#2}
  \begin{tabular}[t]{
    @{}
    wl{\firstcol}
    #1{\firstcol}{2}
    @{}
  }
  #3
  \end{tabular}\par
}
\newcommand{\threecolsection}[3][L]{%
  \section{#2}
  \begin{tabular}[t]{
    @{}
    wl{\firstcol}
    #1{\firstcol+\thirdcol}{4}
    wr{\thirdcol}
    @{}
  }
  #3
  \end{tabular}\par
}

%%% final customization
\setlength{\firstcol}{1.25in}
\setlength{\thirdcol}{1in}
%%%

\begin{document}

\threecolsection{Education}{
  2020 (expected) &Something, somewhere & Ph.D. \\ % or YYYY (expected)
}

\threecolsection{Grants and Scholarships}{
  YYYY & test & bb \\
  YYYY - YYYY & Fellowship & \$ AMOUNT \\ % if normal in your field
}

\twocolsection{Whatever}{
  YYYY & something long to need being split across lines; let's just
         write long enough nonsense and see
}

\twocolsection[J]{Whatever}{
  YYYY & something long to need being split across lines; let's just
         write long enough nonsense and see
}

\end{document}

Bildbeschreibung hier eingeben


Eine weitere Version, bei der Sie Elemente in jeder Liste durch einen vertikalen Abstand trennen können. Man benötigt Methoden auf höherer Ebene, um sicherzustellen, dass der Abstand nur zwischen Elementen hinzugefügt wird . Diese \addlinespacewerden von bereitgestellt .booktabs

\documentclass[11pt]{article}

\usepackage[margin=1in]{geometry} % for margins
\usepackage[american]{babel}      % for language
\usepackage{titlesec}             % to adjust section headers
\usepackage{array}
\usepackage{booktabs}

% customization of sections

\titleformat{\section}
 {\bfseries\Large}
 {}% no number
 {0pt}% no space
 {}% the title
 [\titlerule]

% main macros

\newlength{\firstcol}
\newlength{\thirdcol}

% helper column types
\newcolumntype{L}[2]{%
  >{\raggedright\arraybackslash}p{\dimexpr\textwidth-(#1)-#2\tabcolsep\relax}%
}
\newcolumntype{J}[2]{%
  p{\dimexpr\textwidth-(#1)-#2\tabcolsep\relax}%
}

\ExplSyntaxOn

\NewDocumentCommand{\twocolsection}{ O{L} m +m }
 {
  \section{#2}
  \begin{tabular}[t]{
    @{}
    wl{\firstcol}
    #1{\firstcol}{2}
    @{}
  }
  \scw_cv_table:n { #3 }
  \end{tabular}\par
 }
\NewDocumentCommand{\threecolsection}{ O{L} m +m }
 {
  \section{#2}
  \begin{tabular}[t]{
    @{}
    wl{\firstcol}
    #1{\firstcol+\thirdcol}{4}
    wr{\thirdcol}
    @{}
  }
  \scw_cv_table:n { #3 }
  \end{tabular}\par
 }

\seq_new:N \l__scw_cv_rows_seq
\tl_new:N \l__scw_cv_last_tl

\cs_new_protected:Nn \scw_cv_table:n
 {
  % get the rows
  \seq_set_split:Nnn \l__scw_cv_rows_seq { \\ } { #1 }
  % remove the last item if empty
  \seq_pop_right:NN \l__scw_cv_rows_seq \l__scw_cv_last_tl
  \tl_if_blank:VF \l__scw_cv_last_tl
   {% not blank, reinsert it
    \seq_put_right:NV \l__scw_cv_rows_seq \l__scw_cv_last_tl
   }
  % deliver the rows separated by \\ \addlinespace
  \seq_use:Nn \l__scw_cv_rows_seq { \\ \addlinespace }
 }

\ExplSyntaxOff

%%% final customization
\setlength{\firstcol}{1.25in}
\setlength{\thirdcol}{1in}
%\setlength{\defaultaddspace}{0.5em} % this is the default in booktabs
%%%

\begin{document}

\threecolsection{Education}{
  2020 (expected) &Something, somewhere & Ph.D. \\ % or YYYY (expected)
}

\threecolsection{Grants and Scholarships}{
  YYYY & test & bb \\
  YYYY - YYYY & Fellowship & \$ AMOUNT \\ % if normal in your field
}

\twocolsection{Whatever}{
  YYYY & something long to need being split across lines; let's just
         write long enough nonsense and see
}

\twocolsection[J]{Whatever}{
  YYYY & something long to need being split across lines; let's just
         write long enough nonsense and see
}

\end{document}

Experimentieren Sie mit verschiedenen Werten von \defaultaddspace.

Bildbeschreibung hier eingeben

Für den Umgang mit Unterabschnitten schlage ich eine leicht andere Syntax vor, die eine gewisse Code-Duplikation vermeidet.

\documentclass[11pt]{article}

\usepackage[margin=1in]{geometry} % for margins
\usepackage[american]{babel}      % for language
\usepackage{titlesec}             % to adjust section headers
\usepackage{array}
\usepackage{booktabs}

% customization of sections

\titleformat{\section}
 {\bfseries\Large}
 {}% no number
 {0pt}% no space
 {}% the title
 [\titlerule]
\titlespacing*{\section}{0pt}{*2}{*1}

\titleformat{\subsection}
 {\bfseries\normalsize}
 {}% no number
 {0pt}% no space
 {}% the title
 [\titlerule]
\titlespacing*{\subsection}{0pt}{*1}{*0.5}

% main macros

\newlength{\firstcol}
\newlength{\thirdcol}

% helper column types
\newcolumntype{L}[2]{%
  >{\raggedright\arraybackslash}p{\dimexpr\textwidth-(#1)-#2\tabcolsep\relax}%
}
\newcolumntype{J}[2]{%
  p{\dimexpr\textwidth-(#1)-#2\tabcolsep\relax}%
}

\ExplSyntaxOn

\NewDocumentCommand{\twocol}{ m O{L} m +m }
 {
  #1{#3}
  \begin{tabular}[t]{
    @{}
    wl{\firstcol}
    #2{\firstcol}{2}
    @{}
  }
  \scw_cv_table:n { #4 }
  \end{tabular}\par
 }
\NewDocumentCommand{\threecol}{ m O{L} m +m }
 {
  #1{#3}
  \begin{tabular}[t]{
    @{}
    wl{\firstcol}
    #2{\firstcol+\thirdcol}{4}
    wr{\thirdcol}
    @{}
  }
  \scw_cv_table:n { #4 }
  \end{tabular}\par
 }

\seq_new:N \l__scw_cv_rows_seq
\tl_new:N \l__scw_cv_last_tl

\cs_new_protected:Nn \scw_cv_table:n
 {
  % get the rows
  \seq_set_split:Nnn \l__scw_cv_rows_seq { \\ } { #1 }
  % remove the last item if empty
  \seq_pop_right:NN \l__scw_cv_rows_seq \l__scw_cv_last_tl
  \tl_if_blank:VF \l__scw_cv_last_tl
   {% not blank, reinsert it
    \seq_put_right:NV \l__scw_cv_rows_seq \l__scw_cv_last_tl
   }
  % deliver the rows separated by \\ \addlinespace
  \seq_use:Nn \l__scw_cv_rows_seq { \\ \addlinespace }
 }

\ExplSyntaxOff

%%% final customization
\setlength{\firstcol}{1.25in}
\setlength{\thirdcol}{1in}
%\setlength{\defaultaddspace}{0.5em} % this is the default in booktabs
%%%

\begin{document}

\threecol\section{Education}{
  2020 (expected) &Something, somewhere & Ph.D. \\ % or YYYY (expected)
}

\threecol\section{Grants and Scholarships}{
  YYYY & test & bb \\
  YYYY - YYYY & Fellowship & \$ AMOUNT \\ % if normal in your field
}

\twocol\subsection{Whatever}{
  YYYY & something long to need being split across lines; let's just
         write long enough nonsense and see
}

\twocol\subsection[J]{Whatever}{
  YYYY & something long to need being split across lines; let's just
         write long enough nonsense and see
}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen