
Я новичок в 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
также включает в себя аналогичные команды, например, \spalignmat
для матрицы и \spalignarray
для универсального массива.
Существуют возможности использования различных символов вместо пробела, запятой и точки с запятой или в дополнение к ним (см. документацию).
Кстати, если вам нужно включить в таблицу запятую, пробел или точку с запятой, просто заключите их в фигурные скобки {}
.