我正在尝试创建一个新命令,该命令根据给定的两个参数创建一个多列表格:我的 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 原语,例如,并且您不能在对齐环境之外使用这些命令。\span
tabular
该\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