Используйте запятую вместо & в таблице

Используйте запятую вместо & в таблице

Я новичок в LaTeX. В tabular, мы обычно используем &для раздела. Я хочу создать .styдля табличной среды. Замените &на разделитель запятая, в этом случае запятая должна работать как &в tabularкоманде.

В .texфайле входные данные a,b,cи выходные данные должны выглядеть так:|a|b|c|

решение1

Доказательство концепции. Используйте на свой страх и риск!

Основной подход заключается в изменении \catcodeсимвола, который вы хотите использовать в качестве «выравнивающей вкладки». Вот mytabularсреда, которая это делает:

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentEnvironment {mytabular} { O{\,} }
  {
    \char_set_catcode_other:N \&
    \char_set_catcode_alignment:n {`#1}
    \begin{tabular}
  }
  {
    \end{tabular}
  }
\ExplSyntaxOff

\begin{document}
\pagestyle{empty}

\begin{mytabular}{l|r}
  a , b & c \\
  c , d \\
\end{mytabular}

\begin{mytabular}[@]{l|r}
  a @ b \\
  c @ d, & e \\
\end{mytabular}

\end{document}

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

Необязательный аргумент позволяет выбрать, какой символ будет использоваться в качестве табуляции выравнивания. Никакой проверки на допустимость переданного вами символа не производится. Если вы не передаете символ, используется запятая. Ведет себя &как обычный символ.

Однако, как уже предупреждали другие, это не самая лучшая идея. Пакеты, которые полагаются на то, &чтобы быть вкладкой выравнивания, сломаются.

решение2

Как предложил Бернард, почему бы не использовать csvsimple?

Если в ячейках есть запятые, просто заключите их содержимое в фигурные скобки.

Если в ваших ячейках есть &, просто напишите \&.

\documentclass{article}
\usepackage{filecontents}
\usepackage{csvsimple}

\begin{document}

\begin{filecontents*}{mydata.csv}
a,b,c
\end{filecontents*}
\csvreader[
  tabular=|c|c|c|,
  nohead
 ]{mydata.csv}% filename
{}{\csvcoli & \csvcolii & \csvcoliii}

\vspace{3ex}
and if you have commas or \& in your cells:
\vspace{3ex}

\begin{filecontents*}{mydata.csv}
a,b,c
{c, d},{e, f, g},{h, i, j, k}
l \& m,{n \& o, p},q \& r \& s \& t
\end{filecontents*}
\csvreader[
  tabular=|c|c|c|,
  nohead
 ]{mydata.csv}% filename
{}{\csvcoli & \csvcolii & \csvcoliii}

\end{document}

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

решение3

Вы можете использовать spalignпакет(документация здесь), который включает в себя , \spaligntabularкоторый действует точно так же, как табличный, за исключением того, что он использует пробел и запятую в качестве символа выравнивания &, а точку с запятой — в качестве управляющей последовательности конца строки \\:

\documentclass[12pt]{report}
\usepackage{spalign}

\begin{document}

\spaligntabular{lcr}{a b c; aa bb cc}

\spaligntabular{|c|c|c}{a,b,c}

\end{document}

Это производит следующее:

пример таблицы spalign

и

spaligntabular пример 2

Пакет spalignтакже включает в себя аналогичные команды, например, \spalignmatдля матрицы и \spalignarrayдля универсального массива.

Существуют возможности использования различных символов вместо пробела, запятой и точки с запятой или в дополнение к ним (см. документацию).

Кстати, если вам нужно включить в таблицу запятую, пробел или точку с запятой, просто заключите их в фигурные скобки {}.

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