@set
and @value
¶You use the @set
command to specify a value for a flag, which
is later expanded by the @value
command.
A flag (aka variable) name is an identifier starting with an alphanumeric, ‘-’, or ‘_’. Subsequent characters, if any, may not be whitespace, ‘@’, braces, angle brackets, or any of ‘~`^+|’; other characters, such as ‘%’, may work. However, it is best to use only letters and numerals in a flag name, not ‘-’ or ‘_’ or others—they will work in some contexts, but not all, due to limitations in TeX.
The value is the remainder of the input line, and can contain anything.
Write the @set
command like this:
@set foo This is a string.
This sets the value of the flag foo
to “This is a string.”.
The Texinfo processors then replace a @value{flag}
command with the string to which flag is set. Thus, when
foo
is set as shown above, the Texinfo processors convert this:
@value{foo}
to this:
This is a string.
You can write a @value
command within a paragraph; but you
must write a @set
command on a line of its own.
If you write the @set
command like this:
@set foo
without specifying a string, the value of foo
is the empty string.
If you clear a previously set flag with @clear flag
, a
subsequent @value{flag}
command will report an error.
For example, if you set foo
as follows:
@set howmuch very, very, very
then the processors transform
It is a @value{howmuch} wet day.
into
It is a very, very, very wet day.
If you write
@clear howmuch
then the processors transform
It is a @value{howmuch} wet day.
into
It is a {No value for "howmuch"} wet day.
@value
cannot be reliably used as the argument to an accent
command (see Inserting Accents). For example, this fails:
@set myletter a @'@value{myletter}