我想制作一个表格,其中的行颜色由计算数字决定,请参见下面的示例(不起作用):
\documentclass[a4paper,landscape,12pt]{article}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=0.5cm,right=0.5cm,top=1.75cm,bottom=1.75cm]{geometry}
\usepackage{calculator}
\usepackage[x11names]{xcolor}
\usepackage{colortbl}
\usepackage{pstricks-add}
\newcommand{\myrowcolor}[1]{\ADD{#1}{400}{\ccsum}\rowcolor[wave]{\ccsum}}
\begin{document}
\huge
\ADD{200}{300}{\addresult}
\color[wave]{500} $200 + 300 = \addresult$\\
\begin{pspicture}(0,0)(5,5)
\pscircle*[linecolor={[wave]{\addresult}}](2,2){1}
\end{pspicture}\\
\begin{tabular}{|l|c|}
\rowcolor[wave]{600}
one&two\\
\rowcolor[wave]{\addresult}
\color{Red1}three&\color{Blue1}four\\
\myrowcolor{50}
five&six
\end{tabular}
\end{document}
问题出在我的自制命令上\myrowcolor
。我收到以下错误消息:
misplaced \noalign
我添加了一些其他的线条只是为了演示几个实际有效的其他颜色和计算器的组合。
答案1
\rowcolor
必须是一行中的第一个命令——\ADD
违反了这条规则,因此 LaTeX 会弹出一条错误消息。
现在有两种基本可能性:
- 使用
\noalign
来解决此\ADD
问题,但是,的结果\ADD
存储在 中\ccsum
,这是一个宏,它无法在 中存活,但可以使用(或)进行\noalign
更正——这也适用于非整数。\xdef
\GLOBALCOPY
calculator
- 将计算转移到的参数中
\rowcolor[wave]{...}
,\the\numexpr
假设只涉及整数。——这是更简单的方法!
解决方案中同时应用了两种方法:
\noalign
是一种TeX
允许在下一行开始之前完成操作的原语,这可能包括计算等)
\documentclass[a4paper,landscape,12pt]{article}
\usepackage[ansinew]{inputenc}% Really???
\usepackage[T1]{fontenc}
\usepackage[left=0.5cm,right=0.5cm,top=1.75cm,bottom=1.75cm]{geometry}
\usepackage{calculator}
\usepackage[x11names]{xcolor}
\usepackage{colortbl}
\usepackage{pstricks-add}
\newcommand{\myrowcolor}[1]{\rowcolor[wave]{\the\numexpr#1+400}}
\newcommand{\otherrowcolor}[1]{\noalign{\ADD{#1}{400}{\ccsum}\GLOBALCOPY\ccsum\gccsum}\rowcolor[wave]{\gccsum}}
\begin{document}
\huge
\ADD{200}{300}{\addresult}
\color[wave]{500} $200 + 300 = \addresult$\\
\begin{pspicture}(0,0)(5,5)
\pscircle*[linecolor={[wave]{\addresult}}](2,2){1}
\end{pspicture}\\
\begin{tabular}{|l|c|}
\rowcolor[wave]{600}
one&two\\
\rowcolor[wave]{\addresult}
\color{Red1}three&\color{Blue1}four\\
\myrowcolor{50} five&six \\
\otherrowcolor{-20} seven&eigth
\end{tabular}
\end{document}
答案2
哦,抱歉,我刚才忘了\\
——现在它起作用了!
\documentclass[a4paper,landscape,12pt]{article}
\usepackage[ansinew]{inputenc}% Really???
\usepackage[T1]{fontenc}
\usepackage[left=0.5cm,right=0.5cm,top=1.75cm,bottom=1.75cm]{geometry}
\usepackage{calculator}
\usepackage[x11names]{xcolor}
\usepackage{colortbl}
\usepackage{pstricks-add}
\newcommand{\myrowcolor}[1]{\rowcolor[wave]{\the\numexpr#1+400}}
\newcommand{\otherrowcolor}[1]{\noalign{\ADD{#1}{400}{\ccsum}\GLOBALCOPY\ccsum\gccsum}\rowcolor[wave]{\gccsum}}
%\newcommand{\yetanotherrowcolor}[1]{\noalign{\MULTIPLY{#1}{4}{\mulresult}\DIVIDE{\mulresult}{3}{\divresult}\ADD{\divresult}{363}{\ccsum}\GLOBALCOPY\ccsum\gccsum}\rowcolor[wave]{\gccsum}}
\newcommand{\yetanotherrowcolor}[1]{\noalign{\MULTIPLY{#1}{4}{\mulresult}\DIVIDE{\mulresult}{3}{\divresult}\ADD{\divresult}{363}{\ccsum}\GLOBALCOPY\ccsum\gccsum}\rowcolor[wave]{\gccsum}}
\begin{document}
\huge
\ADD{200}{300}{\addresult}
\color[wave]{500} $200 + 300 = \addresult$\\
\begin{pspicture}(0,0)(5,5)
\pscircle*[linecolor={[wave]{\addresult}}](2,2){1}
\end{pspicture}\\
\begin{tabular}{|l|c|}
\rowcolor[wave]{600}
one&two\\
\rowcolor[wave]{\addresult}
\color{Red1}three&\color{Blue1}four\\
\myrowcolor{50} five&six \\
\otherrowcolor{-20} seven&eight\\
\yetanotherrowcolor{80} nine&ten
\end{tabular}
\end{document}