複数の tabularx テーブルを整列させる

複数の tabularx テーブルを整列させる

ここでLaTeXで履歴書を作成しようとしています。テンプレートを見つけました。https://github.com/btskinner/tex_cv/blob/master/cv.tex私が理解できないのは、以下の例では、コードでは 2 つのテーブルを揃える必要があるのに、なぜ 2 つのテーブルが揃えられていないのかということです。私の場合は次のようにコンパイルされます。

ここに画像の説明を入力してください

2020 と XXXX、および「Something, somwhere」とテストを揃えるにはどうすればよいですか? ありがとうございます!

\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}

答え1

私はマクロを使用しますが、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}

ここに画像の説明を入力してください

特定の CV のデータが収まらない場合に備えて、最初の列と最後の列の幅をパラメーター化することもできます。

tabularこうすることで、 がタイトルから切り離されてしまうリスクがなくなります。


より洗練されたバージョンでは、列の幅 (1 番目と 3 番目) がパラメータ化されるため、プリアンブルの適切な場所でサイズを変更できます。また\twocolsection、 とには\threecolsectionオプションの引数があり、これはL(デフォルト) または でJ、メイン列の左揃え (右揃え) または両端揃えを指定します。

\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}

ここに画像の説明を入力してください


\addlinespace各リスト内の項目を垂直方向のスペースで区切ることができる別のバージョン。によって提供される、項目間にのみスペースが追加されるようにするための高レベルのメソッドが必要です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}

のさまざまな値を試してください\defaultaddspace

ここに画像の説明を入力してください

サブセクションも扱うために、コードの重複を避ける少し異なる構文を提案します。

\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}

ここに画像の説明を入力してください

関連情報