我使用tabular
LaTeX 环境。
我想在 LaTeX 代码中将表格中的一列写为一行。
对于我用 LaTeX 编写的问题,很自然地会一次考虑一列。
例如
1 & 3 & 5
2 & 4 & 6
我想写
1,2
3,4
5,6
我可以为此编写一些代码吗?
答案1
一个可能的解决方案是\pgfplotstabletranspose
使用pgfplotstable
包。
由于您没有提供最小工作示例(MWE),我完全按照你的要求做了,但是,当然,也可以处理列名,并且该包还有许多其他功能来设置列类型。
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\begin{document}
\pgfplotstableread[col sep=comma]{
1,2
3,4
5,6
}{\mytabletotranspose}
\pgfplotstabletranspose{\mytable}{\mytabletotranspose}
\pgfplotstabletypeset[
columns={0,1,2},
every head row/.style={output empty row},
string type
]{\mytable}
\end{document}
答案2
为了好玩:
\documentclass{article}
\usepackage{array}
\usepackage{xinttools}
\makeatletter
\newcommand\TrTable[1]{\begin{tabular}{*{10}{c}}\Tr@Table #1\par\par
\end{tabular}}
\def\Tr@Table #1\par{\if\relax\detokenize{#1}\relax\else
\begin{tabular}{@{}c@{}}
\xintListWithSep{\\}{\xintCSVtoListNoExpand{#1}}
\end{tabular}\expandafter\Tr@@Table\fi}
% some complication with inserting the &'s only if and when needed
\def\Tr@@Table #1\par{\if\relax\detokenize{#1}\relax\else
\@firstofone{&}\begin{tabular}{@{}c@{}}
\xintListWithSep{\\}{\xintCSVtoListNoExpand{#1}}
\end{tabular}\expandafter\Tr@@Table\fi}
\makeatother
\begin{document}
\TrTable{
1,2
3,4
5,6
}
For comparison:
\begin{tabular}{*{3}{c}}
1&3&5 \\
2&4&6
\end{tabular}
\end{document}