Increment (or decrement) a parameter in LaTeX

by robbins
Tags: decrement, increment, latex, parameter
 P: 7 How can I increment or decrement a parameter in LaTeX? For example, suppose I create an environment foo as follows: \newenvironment{foo}[2]{\begin{tabular}{*{#1}c*{#2}r}}{\end{tabular}} I can write \begin{foo}{4}{3} \end{foo} But in my application, if the first parameter is n, then second is always n-1. Is there a way to write this that passes only one parameter (in this case n), but which will produce the table with n + (n - 1) columns as in the environment foo? Decrementing the parameter #1 inside the newenvironment -- if it is possible -- would surely work, but I don't know how to do it. Note: The snippet \let\temp#1 \advance\temp by -1 doesn't work because if I pass the parameter 4, \temp takes the value 'the character 4', which can't follow the \advance command. I'm stuck. Any help?
 P: 7 This solution was posted by Joseph Wright on LaTeX Community: "You don't want \let, you want to do things with numbers proper. The thing is that they then [need] to be assigned to TeX counters. You seem to want something like \newcount\mycount \newenvironment{foo}[1] {% \mycount #1\relax \advance\mycount -1\relax \begin{tabular}{*{#1}c*{\the\mycount}r}% } {\end{tabular}} Here, I'm using a TeX count register to do the maths. You can do the same with a LaTeX counter, but I find this route a bit easier for going downward. TeX assigns count registers locally, so the above should work in most cases." Thanks, Joseph.

 Related Discussions Medical Sciences 19 Engineering, Comp Sci, & Technology Homework 1 Introductory Physics Homework 1 Introductory Physics Homework 2 General Discussion 2