@c ---------------------------------------------------------------------
@c
@c Copyright (C) 2012-2023 The Octave Project Developers
@c
@c See the file COPYRIGHT.md in the top-level directory of this
@c or <https://octave.org/copyright/>.
@c
@c
@c This file is part of Octave.
@c
@c Octave is free software: you can redistribute it and/or modify it
@c under the terms of the GNU General Public License as published by
@c the Free Software Foundation, either version 3 of the License, or
@c (at your option) any later version.
@c
@c Octave is distributed in the hope that it will be useful, but
@c WITHOUT ANY WARRANTY; without even the implied warranty of
@c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@c GNU General Public License for more details.
@c
@c You should have received a copy of the GNU General Public License
@c along with Octave; see the file COPYING.  If not, see
@c <https://www.gnu.org/licenses/>.
@c
@c ---------------------------------------------------------------------

@c The following macro marks words that aspell should ignore during
@c spellchecking.  Within Texinfo it has no effect as it merely replaces
@c the macro call with the argument itself.

@macro nospell {arg}
\arg\
@end macro

@c The following macro works around the Info/plain text expansion of @code{XXX}
@c which is `XXX'.  This looks particularly bad when the macro body is
@c single or double-quoted text, such as a property value `"position"'.
@c The mnemonic to remember this macro is Quoted CODE.

@ifinfo
@macro qcode{arg}
\arg\
@end macro
@end ifinfo
@ifnotinfo
@macro qcode{arg}
@code{\arg\}
@end macro
@end ifnotinfo

@c The following macro works around the Info/plain text expansion of @code{XXX}
@c which is `XXX'.  This can be confusing when the macro body itself
@c ends with a transpose character, such as `x''.
@c The mnemonic to remember this macro is Transpose CODE.

@ifinfo
@macro tcode{arg}
\arg\
@end macro
@end ifinfo
@ifnotinfo
@macro tcode{arg}
@code{\arg\}
@end macro
@end ifnotinfo

@c The following macro is used for the on-line help system, but we don't want
@c lots of `See also: foo, bar, and baz' strings cluttering the printed manual
@c (that information should be in the supporting text for each group of
@c functions and variables).
@c
@c Implementation Note:
@c For TeX, @vskip produces a nice separation.
@c For Texinfo, '@sp 1' should work, but in practice produces ugly results
@c for HTML.  We use a simple blank line to produce the correct behavior.
@c
@c The macro is named @xseealso now because Texinfo introduced its own @seealso
@c command.  But, instead of modifying all source files, the build system uses
@c the munge-texi script to convert @seealso to @xseealso.

@macro xseealso {args}
@iftex
@vskip 2pt
@end iftex
@ifnottex

@end ifnottex
@ifnotinfo
@noindent
@strong{See also:} \args\.
@end ifnotinfo
@ifinfo
@noindent
See also: \args\.
@end ifinfo
@end macro

@c ------------------------------------------------------------
@c non-macro items
@c ------------------------------------------------------------

@c These may be useful for all, not just for octave.texi.
@tex
  \ifx\rgbDarkRed\thisisundefined
    \def\rgbDarkRed{0.50 0.09 0.12}
  \fi
  \ifx\linkcolor\thisisundefined
    \relax
  \else
    \global\def\linkcolor{\rgbDarkRed}
  \fi
  \ifx\urlcolor\thisisundefined
    \relax
  \else
    \global\def\urlcolor{\rgbDarkRed}
  \fi
  \ifx\urefurlonlylinktrue\thisisundefined
    \relax
  \else
    \global\urefurlonlylinktrue
  \fi
@end tex

@c Make the apostrophe in code examples cut-and-paste friendly so programmers
@c can take examples from the Octave manual and directly run them in Octave.
@codequoteundirected on
