
私は 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}
次のような結果が生成されます:
そして
パッケージには、行列や汎用配列などのspalign
同様のコマンドも含まれています。\spalignmat
\spalignarray
スペース、カンマ、セミコロンの代わりに、またはそれらに加えて、別の文字を使用するオプションがあります (ドキュメントを参照)。
ちなみに、表にカンマ、スペース、セミコロンを含める必要がある場合は、中括弧で囲むだけです{}
。