1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
% ------------------------------------------------------------------------
% File: srcltx.sty
% ==========
%
% Version 1.002 1999 Sep 3 (modified to change \everypar)
% by David Carlisle
%
% Version 1.001 1998 Dec 23 (modified to change \output)
% by Berthold Horn
%
% This package was originally written by Aleksander Simonic (the
% author of WinEdt Shell) to implement a source file tracking and
% DVI "SRC" specials for LaTeX.
%
% This package comes with no guarantees and no reserved rights.
% You can use or modify this file at your own risk.
% ************************************************************************
% NOTE: TeX commands are case sensitive. You have to use uppercase
% \Input to take advantage of this package
%
% This package supports nested \Input commands...
% File extension should be specified in \Input!
%
% This file should be placed in a directory where your LaTeX is
% looking for inputs (eg. ...\localtexmf\tex for MiKTeX).
%
% If you are writing a book with WinEdt and LaTeX simply
% include this file and use \include{mychapter} command...
% This way all the necessary specials for DVI Search and
% Inverse Search are inserted in your DVI File.
%
% WinEdt will be able to track Errors from your LOG file.
%
% ************************************************************************
%
% Some TeX implementations (eg. MiKTeX 1.20 [or later]) can insert
% the SRC specials much better than any macro package. Consult your
% TeX documentation to see if it is better to leave the task to your
% TeX. You can still use the [inactive] version of this package to
% take advantage of the re-defined Input commands and thus allowing
% WinEdt to keep track of errors in included source files.
%
% MiKTeX inserts the SRC specials in the DVI file if you start
% [La]TeX with --src qualifier (see MiKTeX's Manual:
% ...\texmf\Doc\MiKTeX\MiKTeX.pdf for more info).
%
% ************************************************************************
%
% * NOTE: Some TeX implementations add the file type to the "\jobname".
% In that case the definition of the "\MainFile" should be modified to:
%
% \def\MainFile{\jobname} instead of \def\MainFile{\jobname.tex}.
%
% ************************************************************************
%
% *** Example - Your LaTeX thesis document may look like this:
%
%\documentclass[12pt]{report}
%\usepackage[centertags]{amstex}
%\usepackage{thesis,newlfont,amsthm}
%\usepackage[active]{srcltx}
%%No src specials are written when loading the package by
%%\usepackage[inactive]{srcltx}
%
% .... Preamble ....
%
%\begin{document}
%
% .... Title, Author etc. ....
%
%\WinEdt{?0000} % Do not process any Errors (Overful/Underful Boxes)
%\beforepreface
%\WinEdt{?1111} % Process All Types of Errors from here on
%\include{ABS}
%\include{ACK}
%\afterpreface
%\include{chapter0}
%\include{chapter1}
%\include{chapter2}
%\include{chapter3}
%\bibliographystyle{amsplain}
%\bibliography{xbib}
%\end{document}
%
% ------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{srcltx}[1999/10/11 v1.002 DVI Search]
\newif\ifSRCOK \SRCOKtrue
\DeclareOption{active}{\SRCOKtrue}
\DeclareOption{inactive}{\SRCOKfalse}
\ExecuteOptions{inactive}
\ProcessOptions
% ------------------------------------------------------------------------
\newcount\PAGETOP
\newcount\LASTLINE
\global\PAGETOP=1
\global\LASTLINE=-1
\gdef\MainFile{\jobname.tex}% ".tex" needed for MiKTeX
\gdef\CurrentInput{\MainFile}
\newcount\INPSP
\global\INPSP=0
\def\EJECT{\SRC\eject}
\def\WinEdt#1{\typeout{:#1}}% WinEdt LOG MODE and INPUT
% ------------------------------------------------------------------------
%If your are using DVIWIN remove the \space from the definitions below...
\def\SRC{\ifSRCOK%
\ifnum\inputlineno>\LASTLINE%
\ifnum\LASTLINE<0%
\global\PAGETOP=\inputlineno%
\fi%
\global\LASTLINE=\inputlineno%
\ifnum\INPSP=0%
\ifnum\inputlineno>\PAGETOP%
\special{src:\the\inputlineno\space\CurrentInput}%
\fi%
\else%
\special{src:\the\inputlineno\space\CurrentInput}%
\fi%
\fi%
\fi}
% ------------------------------------------------------------------------
\def\PUSH#1{%
\SRC%
\ifnum\INPSP=0 \global\let\INPSTACKA=\CurrentInput \else%
\ifnum\INPSP=1 \global\let\INPSTACKB=\CurrentInput \else%
\ifnum\INPSP=2 \global\let\INPSTACKC=\CurrentInput \else%
\ifnum\INPSP=3 \global\let\INPSTACKD=\CurrentInput \else%
\ifnum\INPSP=4 \global\let\INPSTACKE=\CurrentInput \else%
\ifnum\INPSP=5 \global\let\INPSTACKF=\CurrentInput \else%
\global\let\INPSTACKX=\CurrentInput \fi\fi\fi\fi\fi\fi%
\gdef\CurrentInput{#1}%
\WinEdt{<+ \CurrentInput}%
\global\LASTLINE=0%
\ifSRCOK\special{src:1\CurrentInput}\fi%
\global\advance\INPSP by 1}
%
\def\POP{%
\ifnum\INPSP>0 \global\advance\INPSP by -1 \fi%
\ifnum\INPSP=0 \global\let\CurrentInput=\INPSTACKA \else%
\ifnum\INPSP=1 \global\let\CurrentInput=\INPSTACKB \else%
\ifnum\INPSP=2 \global\let\CurrentInput=\INPSTACKC \else%
\ifnum\INPSP=3 \global\let\CurrentInput=\INPSTACKD \else%
\ifnum\INPSP=4 \global\let\CurrentInput=\INPSTACKE \else%
\ifnum\INPSP=5 \global\let\CurrentInput=\INPSTACKF \else%
\global\let\CurrentInput=\INPSTACKX \fi\fi\fi\fi\fi\fi%
\WinEdt{<-}%
\global\LASTLINE=\inputlineno%
\global\advance\LASTLINE by -1%
\SRC}
% ------------------------------------------------------------------------
% Dummy Input: can be used as \INPUT{<file>.bbl} to collect \bibitems
\def\INPUT#1{\relax}
% ------------------------------------------------------------------------
% Redefine the original \include command
\let\OldINCLUDE=\include
\def\include#1{%Always ".tex" file type!
\EJECT%
\PUSH{#1.tex}%
\OldINCLUDE{#1}%
\POP}
% ------------------------------------------------------------------------
\def\Input#1{%Specify File Extension!
\PUSH{#1}%
\input #1%
\POP}
% ------------------------------------------------------------------------
% Note that these have been defined to concatenate the \SRC with
% whatever those token lists did before, just in case they were not
% empty token lists. Of course, later definitions may undo all this...
\let\originalxxxeverypar\everypar
\newtoks\everypar
\originalxxxeverypar{\the\everypar\expandafter\SRC}
%\everypar\expandafter{\the\everypar\expandafter\SRC}
% ??? Remove the following line if you encounter problems:
\everymath\expandafter{\the\everymath\expandafter\SRC}
% ------------------------------------------------------------------------
% Redefine the \bibliography command:
\let\zzzxxxbibliography=\bibliography
\def\bibliography#1{\PUSH{\jobname.bbl}\zzzxxxbibliography{#1}\POP}
%------------------------------------------------------------------------
% Modification to output routine to turn off \SRC while \output is active
\output\expandafter{\expandafter\SRCOKfalse\the\output}
%------------------------------------------------------------------------
|