计算器和colortbl

计算器和colortbl

我想制作一个表格,其中的行颜色由计算数字决定,请参见下面的示例(不起作用):

\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\GLOBALCOPYcalculator
  • 将计算转移到的参数中\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}

相关内容