Есть ли способ выровнять содержимое столбца по определенному символу в тексте (например, по тире)?

Есть ли способ выровнять содержимое столбца по определенному символу в тексте (например, по тире)?

Я пытаюсь создать этот раздел для своего резюме, но не могу понять, как красиво выровнять содержимое таблицы. Я хочу, чтобы они все были выровнены по "|" или длинному тире.

Вот такой у меня сейчас код. Он создает таблицу с 3 столбцами.

\usepackage{tabularx}

\begin{document}

\section*{LANGUAGES}
    \begin{tabularx}{1\textwidth}{
    >{\raggedright\arraybackslash}X 
   >{\raggedright\arraybackslash}X     
>{\raggedright\arraybackslash}X 
   }
      \textbf{English} (Native) & \textbf{French} & \textbf{Polish} \\ \\
      
    Speaking | \textit{Fluent} & Speaking | \textit{Limited} & Speaking | \textit{Proficient} \\ 
    
    Listening | \textit{Fluent} & Listening | \textit{Limited} & Listening | \textit{Proficient} \\ 
    
    Reading | \textit{Fluent} & Reading | \textit{Proficient} & Reading | \textit{Limited} \\ 
    
    Writing |  \textit{Fluent} & Writing | \textit{Intermediate} & Writing | \textit{Basic} \\
    \end{tabularx}

\end{document}

Вот что он выводит.

что у меня есть сейчас

Я бы хотел, чтобы он вывел что-то вроде этого

введите описание изображения здесь

Где все выровнено по тире (но сделано во всех трех столбцах).

Есть ли способ сделать это внутри таблицы? Могу ли я сделать подтаблицы внутри таблиц, чтобы сделать это, или есть какой-то пакет для этого?

решение1

Вы можете сделать это с помощью tabular*.

\documentclass{article}
\usepackage{geometry}% for less generous margins

\begin{document}

\section*{LANGUAGES}

\noindent
\begin{tabular*}{\textwidth}{
  @{\extracolsep{\fill}}
  l @{\ ---\ \extracolsep{0pt}} l @{\extracolsep{\fill}}
  l @{\ ---\ \extracolsep{0pt}} l @{\extracolsep{\fill}}
  l @{\ ---\ \extracolsep{0pt}} l
  @{}
}
\multicolumn{2}{@{}l}{\textbf{English} (Native)} &
\multicolumn{2}{@{}l}{\textbf{French}} &
\multicolumn{2}{@{}l@{}}{\textbf{Polish}} \\[2ex]
Speaking & \textit{Fluent} & Speaking & \textit{Limited} & Speaking & \textit{Proficient} \\
Listening & \textit{Fluent} & Listening & \textit{Limited} & Listening & \textit{Proficient} \\
Reading & \textit{Fluent} & Reading & \textit{Proficient} & Reading & \textit{Limited} \\
Writing &  \textit{Fluent} & Writing & \textit{Intermediate} & Writing & \textit{Basic} \\
\end{tabular*}

\end{document}

Обратите внимание, что длинное тире — этонетввод как |. Тот факт, что |может создать длинное тире, является просто случайным и, например, он не сработает, если вы используете кодировку T1. Длинное тире вводится как ---.

введите описание изображения здесь

решение2

С tabularxвыравниванием по правому и левому краю:

\documentclass{article}
\usepackage{geometry}
\usepackage{tabularx}

\begin{document}
    \begin{tabularx}{\textwidth}{@{}
                                 *{3}{r @{\ ---\ }
                                    >{\raggedright\arraybackslash\itshape}X}
                                 @{}}
%
 \multicolumn{2}{l}{\textbf{English} (Native)} 
        &   \multicolumn{2}{l}{\textbf{French}} 
                &   \multicolumn{2}{l}{\textbf{Polish}}             \\[1ex]

Speaking    & Fluent    &   Speaking    & Limited       & Speaking  & Proficient    \\
Listening   & Fluent    &   Listening   & Limited       & Listening & Proficient    \\
Reading     & Fluent    &   Reading     & Proficient    & Reading   & Limited       \\
Writing     & Fluent    &   Writing     & Intermediate  & Writing   & Basic         \\
    \end{tabularx}
\end{document}

введите описание изображения здесь

Связанный контент