# [Tuglist] Expanding \input{files}

E. Krishnan tuglist@tug.org.in
Sat, 13 Apr 2002 11:06:20 +0530 (IST)

On Thu, 11 Apr 2002, H.S.Rai wrote:

>
> Is there any tool or way (other than "insert file") to
> expand files included by \input.  For example if master.tex
> has following statements:
>
> \input{file1}	\input{file2}	\input{file3}
>
> and further, there are two \input statements in each of
> file1, file2 and file3.
>
> Is it possible to view content of all these 6 files in
> master.tex

I have some partial solutions to your question, in GNU Emacs:

1. Using RefTeX: For this to work, each of your "input files" should start
with some LaTeX "section" command such as \chapter, \section etc. (or
including the lines below in your .emacs file:

(setq reftex-enable-partial-scans t)
(setq reftex-save-parse-info t)
(setq reftex-use-multiple-selection-buffers t)

Open the master file and type

M-x reftex-parse-all

(Here M- stands for the "meta" key, usually "Alt"). Then type

C-c =

which you can select and edit your various input files. If you're
running Emacs in X, then all these can be done via menus and mouse
clicks.

2. Using elisp: In your "master" file, after each \input, write a piece of
elisp as follows:

\begin{document}

\input{file1}%(find-file "file1.tex")
\input{file2}%(find-file "file2.tex")

\end{document}

Also, include the code

%(find-file "master.tex")

at the end of each input file. Open the master file, place the cursor
just after the closing parenthesis of the second line and type

C-c C-e

The file file1.tex will be opened. To get back to the master file, do
the same procedure at the end of the lisp code in the input file.

3. Using outline mode: This is not really a solution to your question, but
an alternative way of looking at it. Instead of keeping the document in
multiple files and then inputting In a master file, you can put the
entire  document in a single file and then collapse it into just the
sectioning heads using the outline mode. Type

M-x outline-minor-mode

in such a file and then use the various "show" or hide" commands.

I've a feeling that the second method can be used for a "complete"
solution to your question, but I don't know enough lisp for that.

--
Krishnan