新命令多列的问题

新命令多列的问题

我正在尝试创建一个新命令,该命令根据给定的两个参数创建一个多列表格:我的 MWE 如下:

\documentclass[landscape]{article}
\usepackage{array}
\usepackage{xifthen}
\usepackage{xstring}
\usepackage{multicol}

\newcommand\dummy[2]{\multicolumn{\the \numexpr #2 - #1 + 1}{c}{hola}}


\begin{document}

This is an example of \dummy{4}{5}

\end{document}

但是,我有以下错误:

 Misplaced \omit. [This is a example of \dummy{4}{5}]
 Misplaced \span. [This is a example of \dummy{4}{5}]
 Misplaced \omit. [This is a example of \dummy{4}{5}]

有人可以帮我解决这些问题吗?

先感谢您。

答案1

错误中出现的\omit和命令是用于控制对齐环境的 TeX 原语,例如,并且您不能在对齐环境之外使用这些命令。\spantabular

\multicolumn命令在内部使用\omit\span来构成其事物,因此,您不能在\multicolumn外部使用对齐。

要解决此问题,您可以将\dummy命令包装在tabular环境中:

\documentclass{article}

\newcommand\dummy[2]{\multicolumn{\numexpr(#2)-(#1)+1\relax}{c}{hola}}

\begin{document}

This is an example of
\begin{tabular}{cc}
  \dummy{4}{5}
\end{tabular}

\end{document}

{cc}请注意,我在 之后使用了两列 ( ) \begin{tabular},因为#2 - #1 + 1 = 5 - 4 + 1 = 2。您需要的表格列数至少与 给出的列数相同\multicolumn


此外,正如 egreg 所指出的,\the这里没有必要。\the用于打印 box、dimen、count 的内容(列表还在继续)。在这种情况下,返回的值\numexpr就足够了。


另外²,正如 Heiko Oberdiek 所指出的,如果 的参数中有表达式,用括号括起来#1和可以使代码更加健壮。#2\dummy

相关内容