表では&の代わりにカンマを使用する

表では&の代わりにカンマを使用する

私は 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

Bernard が提案したように、 を使用しないのはなぜですか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パッケージを使用することができます(ドキュメントはこちら)には、tabular とまったく同じように動作する機能が含まれています\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}

次のような結果が生成されます:

spaligntabularの例

そして

spaligntabularの例2

パッケージには、行列や汎用配列などのspalign同様のコマンドも含まれています。\spalignmat\spalignarray

スペース、カンマ、セミコロンの代わりに、またはそれらに加えて、別の文字を使用するオプションがあります (ドキュメントを参照)。

ちなみに、表にカンマ、スペース、セミコロンを含める必要がある場合は、中括弧で囲むだけです{}

関連情報