Use vírgula em vez de & na tabela

Use vírgula em vez de & na tabela

Eu sou novo em LaTeX. Em tabular, geralmente usamos &para partição. Quero criar um .styambiente tabular. Substitua &pelo delimitador de vírgula; neste caso, a vírgula deve funcionar como &no tabularcomando.

No .texarquivo, a entrada é a,b,ce a saída deve ser semelhante|a|b|c|

Responder1

Prova de conceito. Use por sua conta e risco!

A abordagem básica é mudar \catcodeo caractere que você deseja usar como “guia de alinhamento”. Aqui está um mytabularambiente 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}

insira a descrição da imagem aqui

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}

insira a descrição da imagem aqui

Responder3

Você pode usar o spalignpacote(documentação aqui), que inclui \spaligntabularque 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:

exemplo espaligntabular

e

exemplo espaligntabular 2

O spalignpacote também inclui comandos semelhantes, como \spalignmatpara uma matriz e \spalignarraypara 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 {}.

informação relacionada