编辑现有 LaTeX 表中列顺序的方法?

编辑现有 LaTeX 表中列顺序的方法?

编辑现有 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。同样适用于记事本++

相关内容