@c -*-texinfo-*-
@c ============================================================================
@c
@c    Platform-Specific Texinfo Configuration for Unix
@c    Copyright (C) 2000 by Eric Sunshine <sunshine@sunshineco.com>
@c
@c    This library is free software; you can redistribute it and/or
@c    modify it under the terms of the GNU Library General Public
@c    License as published by the Free Software Foundation; either
@c    version 2 of the License, or (at your option) any later version.
@c
@c    This library is distributed in the hope that it will be useful,
@c    but WITHOUT ANY WARRANTY; without even the implied warranty of
@c    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
@c    Library General Public License for more details.
@c
@c    You should have received a copy of the GNU Library General Public
@c    License along with this library; if not, write to the Free
@c    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@c
@c ============================================================================
@c ----------------------------------------------------------------------------
@c unixdef.txi
@c
@c    Unix-specific configuration for Texinfo.
@c
@c    This file defines @import{} and @picture{} macros for including other
@c    Texinfo and image files which reside in subdirectories.  Use the
@c    @import{} and @picture{} macros rather than Texinfo's @include and
@c    @image{} commands, respectively.
@c
@c    Neither TeX nor the Texinfo tools (makeinfo, texi2html, etc.) deal
@c    gracefully with differences in pathname syntax between various platforms
@c    (such as Unix, Windows/DOS, Macintosh, etc.).  The @import{} and
@c    @picture{} macros defined by this file take platform-specific pathname
@c    syntax into account and act appropriately.
@c
@c    To import a Texinfo file from the current directory, use @import{}.  To
@c    import a file from within an immediate subdirectory, use @imports{}.
@c    Use @importss{} for a file two directories deep; @importsss{} for a file
@c    three levels deep; and so on.  For example, to include the file
@c    "bar.texi" which resides within an immediate subdirectory named "foo",
@c    use the command @imports{foo,bar.texi}.
@c
@c    The @picture{} macros work similarly.  Use @picture{} to import an image
@c    from the current directory; @pictures{} for a file from an immediate
@c    subdirectory; @picturess{} for a file two directories deep, and so on.
@c    Unlike Texinfo's @image{} directive, @picture{} does not allow manual
@c    specification of the image's dimensions.
@c
@c NOTES
@c    The practice of adding an "s" to the name of the @import{} and
@c    @picture{} directives was chosen on account of the extremely limited
@c    macro handling capabilities within the Texinfo language, since it does
@c    not provide any mechanism for gracefully handling a variable number of
@c    arguments.
@c
@c    Texinfo to HTML conversion via texi2html requires version 1.60 or later
@c    since earlier versions do not understand the @macro directive.
@c
@c TODO / BUGS
@c    The TeX versions of @import{} do not (yet) deal gracefully with
@c    underscores ("_") in pathname components.  Unfortunately, TeX treats the
@c    underscore as a subscripting operator.
@c ----------------------------------------------------------------------------

@ifnottex
@rmacro import{a}
@include \a\
@end rmacro

@rmacro imports{a,b}
@include \a\/\b\
@end rmacro

@rmacro importss{a,b,c}
@include \a\/\b\/\c\
@end rmacro

@rmacro importsss{a,b,c,d}
@include \a\/\b\/\c\/\d\
@end rmacro

@rmacro importssss{a,b,c,d,e}
@include \a\/\b\/\c\/\d\/\e\
@end rmacro

@rmacro importsssss{a,b,c,d,e,f}
@include \a\/\b\/\c\/\d\/\e\/\f\
@end rmacro
@end ifnottex

@macro picture{a}
@image{\a\}
@end macro

@macro pictures{a,b}
@image{\a\/\b\}
@end macro

@macro picturess{a,b,c}
@image{\a\/\b\/\c\}
@end macro

@macro picturesss{a,b,c,d}
@image{\a\/\b\/\c\/\d\}
@end macro

@macro picturessss{a,b,c,d,e}
@image{\a\/\b\/\c\/\d\/\e\}
@end macro

@macro picturesssss{a,b,c,d,e,f}
@image{\a\/\b\/\c\/\d\/\e\/\f\}
@end macro

@tex
\gdef\import#1{\doimport#1\finish}
\gdef\doimport#1\finish{\begingroup
  \def\thisfile{#1}%
  \input\thisfile
\endgroup}

\gdef\imports#1{\doimports#1\finish}
\gdef\doimports#1,#2\finish{\doimport#1/#2\finish}

\gdef\importss#1{\doimportss#1\finish}
\gdef\doimportss#1,#2,#3\finish{\doimport#1/#2/#3\finish}

\gdef\importsss#1{\doimportsss#1\finish}
\gdef\doimportsss#1,#2,#3,#4\finish{\doimport#1/#2/#3/#4\finish}

\gdef\importssss#1{\doimportssss#1\finish}
\gdef\doimportssss#1,#2,#3,#4,#5\finish{\doimport#1/#2/#3/#4/#5\finish}

\gdef\importsssss#1{\doimportsssss#1\finish}
\gdef\doimportsssss#1,#2,#3,#4,#5,#6\finish{\doimport#1/#2/#3/#4/#5/#6\finish}
@end tex
