
Eu sou novo em LaTeX. Em tabular
, geralmente usamos &
para partição. Quero criar um .sty
ambiente tabular. Substitua &
pelo delimitador de vírgula; neste caso, a vírgula deve funcionar como &
no tabular
comando.
No .tex
arquivo, a entrada é a,b,c
e a saída deve ser semelhante|a|b|c|
Responder1
Prova de conceito. Use por sua conta e risco!
A abordagem básica é mudar \catcode
o caractere que você deseja usar como “guia de alinhamento”. Aqui está um mytabular
ambiente que faz isso:
\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}
O argumento opcional permite escolher qual caractere será usado como guia de alinhamento. Nenhuma verificação é feita para ver se o caractere que você passou é válido. Se não passar um caractere, será usada uma vírgula. O &
se comporta como um personagem normal.
Porém, como outros já avisaram, esta não é a melhor ideia. Pacotes que dependem de &
uma guia de alinhamento serão quebrados.
Responder2
Como Bernard sugeriu, por que não usar csvsimple
?
Se você tiver vírgulas em suas células, basta colocar o conteúdo entre chaves.
Se você tiver & em suas células, basta escrever \&
.
\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}
Responder3
Você pode usar o spalign
pacote(documentação aqui), que inclui \spaligntabular
que atua exatamente como tabular, exceto que usa espaço e vírgula como caractere de alinhamento &
e ponto e vírgula como sequência de controle de final de linha \\
:
\documentclass[12pt]{report}
\usepackage{spalign}
\begin{document}
\spaligntabular{lcr}{a b c; aa bb cc}
\spaligntabular{|c|c|c}{a,b,c}
\end{document}
Produz isso:
e
O spalign
pacote também inclui comandos semelhantes, como \spalignmat
para uma matriz e \spalignarray
para um array genérico.
Existem opções para usar caracteres diferentes em vez ou além de espaço, vírgula e ponto e vírgula (consulte a documentação).
A propósito, se você precisar incluir vírgula, espaço ou ponto e vírgula em sua tabela, basta colocá-los entre colchetes {}
.