LaTeX Increment (or decrement) a parameter in LaTeX

  • Thread starter Thread starter robbins
  • Start date Start date
  • Tags Tags
    Latex Parameter
AI Thread Summary
To increment or decrement a parameter in LaTeX, particularly in a custom environment, one effective method involves using TeX count registers. The discussion centers on creating an environment that accepts a single parameter, n, while automatically calculating the second parameter as n-1. The proposed solution involves defining a new count register, \mycount, within the environment. By assigning the value of the parameter to \mycount and then using the \advance command to decrement it, the environment can dynamically generate the required number of columns in a tabular format. This approach is favored for its simplicity and effectiveness in handling numerical operations in LaTeX, ensuring that the environment can function correctly with just one input parameter.
robbins
Messages
7
Reaction score
0
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?
 
Physics news on Phys.org
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.
 

Similar threads

Replies
2
Views
2K
Replies
1
Views
5K
Replies
7
Views
3K
Replies
2
Views
10K
Replies
4
Views
3K
Replies
6
Views
12K
Back
Top