编辑现有 LaTeX 表格的最佳方法是什么?我需要交换两列的顺序,但想不出有效的方法。
我的表是具有以下结构的长表:
A & -0.523 & 26.94 & 0.8243 & 0.0000 & -12.67 \\
B & -0.614 & 30.02 & 0.8509 & 0.0000 & -13.12 \\
C & -0.630 & 32.92 & 0.9254 & 0.0000 & -21.45 \
我需要更改值以便:
A & 26.94 & -0.523 & 0.8243 & 0.0000 & -12.67 \\
(etc)
我的想法是将其导入 Excel 并拖动列,然后使用该concatenate()
函数生成number & number
结构。我觉得可能还有更好的方法,但我不知道。
答案1
任何具有正则表达式替换功能的编辑器都可以轻松交换列。例如,如果命令行中tab.tex
包含您的输入,则此正则表达式将交换第 2 列和第 3 列。(您可能需要在正则表达式中使用更多或更少的反斜杠,具体取决于所使用的命令行 shell)
sed -e "s/^\([^\&]*\)\&\([^\&]*\)\&\([^\&]*\)/\1\3\2/" tab.tex
A 26.94 -0.523 & 0.8243 & 0.0000 & -12.67 \\
B 30.02 -0.614 & 0.8509 & 0.0000 & -13.12 \\
C 32.92 -0.630 & 0.9254 & 0.0000 & -21.45 \
答案2
对于未来的建议是:
创建大表时,我会发出命令来对行进行编码。
\newcommand{\resultrow}[4]{#1 & #2 & #3 & #4 \\}
如果您想要改变某些内容的顺序/布局,则只需改变命令定义。
您应该注意使命令尽可能具有描述性,并且参数的顺序应符合命令的逻辑而不是表格的逻辑。这将使以后对顺序的更改更简单。
根据要求,举个例子。以这张表为例:
\begin{tabular}{l l l l}
a & b & c & d \\
2.33 & 4.55 & 5.66 & 7.88 \\
3.44 & 5.66 & 6.77 & 9.00 \\
.......
\end{tabular}
如果您随后想更改列的顺序,请参阅此问题的其他答案。不过,我会这样解决它:
\newcommand{\abcdresults}[4]{ #1 & #2 & #3 & #4 \\}
\begin{tabular}{l l l l}
a & b & c & d \\
\abcresults{2.33}{4.55}{5.66}{7.88}
\abcresults{3.44}{5.66}{6.77}{9.00}
.......
\end{tabular}
如果您想要更改顺序,只需简单地将主体更改\abcdresults
为例如:{\textbf{#3} & #1 & #2 & #4 \\}
答案3
+1 David 的sed
一行代码,但恕我直言,没有比 AWK 更好的处理表格的工具了。这是上述问题的解决方案!
awk 'BEGIN {FS="&";OFS="&"}{print $1,$3,$2,$4,$5}' file.csv > newfile.csv
答案4
一些 TeX 编辑器(例如 WinEdt 和 TeXnicCenter)以及文本编辑器(例如 Notepad++)提供了矩形选择此功能对于编辑表格非常有用。
为了编辑用户,这个很好但经常被忽视的功能是在状态行。
如果您单击LINE
它,它将变成Block
并切换到矩形模式。这允许用户选择矩形区域并像往常一样执行复制粘贴选项。
这对于通过复制一列并将其粘贴在列之间来填充&
从 Excel、MATLAB 等导入的表格数据中缺失的列特别有用。&
技术中心2ALT如果在选择时按下+键,则进行矩形选择SHIFT。同样适用于记事本++。