Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Increment (or decrement) a parameter in LaTeX

  1. Nov 14, 2009 #1
    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}
    <tabular data in seven columns>
    \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?
     
  2. jcsd
  3. Nov 16, 2009 #2
    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.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook




Loading...
Similar Threads for Increment decrement parameter
MATLAB Parameter fitting with a numerical solution
Mathematica DSolve output with unexpected parameters