%%
%% This is file `srcltx.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% srcltx.dtx  (with options: `package,latex')
%% 
%% This package is in the public domain. It comes with no guarantees
%% and no reserved rights. You can use or modify this package at your
%% own risk.
%% Originally written by: Aleksander Simonic
%% Current maintainer: Stefan Ulrich <stefanulrich@users.sourceforge.net>
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{srcltx}[2004/10/05 v1.5 Source specials for inverse search in DVI files]
\newif\ifSRCOK \SRCOKtrue
\newif\ifsrc@debug@
\newif\ifsrc@dviwin@
\newif\ifsrc@winedt@\src@winedt@true
\newif\ifsrc@everypar@\src@everypar@true
\newif\ifsrc@everymath@\src@everymath@true
\RequirePackage{ifthen}
\DeclareOption{active}{\SRCOKtrue}
\DeclareOption{inactive}{\SRCOKfalse}
\DeclareOption{nowinedt}{\src@winedt@false}
\DeclareOption{debug}{\src@debug@true}
\DeclareOption{nopar}{\global\src@everypar@false}
\DeclareOption{nomath}{\global\src@everymath@false}
\newcommand*\src@maybe@space{}
\let\src@maybe@space\space
\DeclareOption{dviwin}{\let\src@maybe@space\relax}
\ExecuteOptions{active}
\ProcessOptions
\newcount\src@lastline
\global\src@lastline=-1
\newcommand*\src@debug{}
\def\src@debug#1{\ifsrc@debug@\typeout{DBG: |#1|}\fi}
\newcommand*\MainFile{}
\def\MainFile{\jobname.tex}
\newcommand*\CurrentInput{}
\gdef\CurrentInput{\MainFile}
\newcommand*\WinEdt{}
\def\WinEdt#1{\ifsrc@winedt@\typeout{:#1}\fi}
\newcommand\src@AfterFi{}
\def\src@AfterFi#1\fi{\fi#1}
\AtBeginDocument{%
    \@ifpackageloaded{soul}{%
        \let\src@SOUL@\SOUL@
        \def\SOUL@#1{%
            \ifSRCOK
                \SRCOKfalse\src@SOUL@{#1}\SRCOKtrue
            \else
                \src@AfterFi\src@SOUL@{#1}%
            \fi
        }%
    }{}%
}
\newcommand*\src@spec{}
\def\src@spec{%
    \ifSRCOK
        \ifnum\inputlineno>\src@lastline
            \global\src@lastline=\inputlineno
            \src@debug{%
                src:\the\inputlineno\src@maybe@space\CurrentInput}%
            \special{src:\the\inputlineno\src@maybe@space\CurrentInput}%
        \fi
    \fi
}
\newcommand\src@before@file@hook{}
\newcommand\src@after@file@hook{}
\def\src@before@file@hook#1{%
    \protected@xdef\CurrentInput{#1}%
    \WinEdt{<+ \CurrentInput}%
    \global\src@lastline=0
    \ifSRCOK\special{src:1\CurrentInput}\fi
}
\def\src@after@file@hook#1{%
    \WinEdt{<-}%
    \global\src@lastline=\inputlineno
    \global\advance\src@lastline by -1%
    \gdef\CurrentInput{#1}%
    \src@spec
}
\newcommand*\src@fname{}
\newcommand*\src@getfilename@with@ext[2]{%
    \src@@getfilename@with@ext#1.\end{#2}%
    \PackageInfo{srcltx}{Expanded filename `#1' to `\src@fname'}%
}
\newcommand*\src@@getfilename@with@ext{}
\def\src@@getfilename@with@ext#1.#2\end#3{%
    \ifthenelse{\equal{#2}{}}{%
        \def\src@fname{#1.#3}%
    }{%
        \ifthenelse{\equal{#2}{#3.}}{%
            \def\src@fname{#1.#3}%
        }{%
            \def\src@fname{#1.#2#3}%
        }%
    }%
}
\newcommand*\src@include{}
\newcommand*\src@@include{}
\let\src@include\include
\def\include#1{%
    \src@spec
    \clearpage
    \expandafter\src@@include\expandafter{\CurrentInput}{#1}%
}%
\def\src@@include#1#2{%
    \src@before@file@hook{#2.tex}%
    \src@include{#2}%
    \src@after@file@hook{#1}%
}
\newcommand*\src@input{}
\newcommand*\src@@input{}
\newcommand*\src@@@input{}
\let\src@input\input
\def\input{\src@spec\@ifnextchar\bgroup\src@@input\@@input}%
\def\src@@input#1{%
    \expandafter\src@@@input\expandafter{\CurrentInput}{#1}%
}
\def\src@@@input#1#2{%
    \src@getfilename@with@ext{#2}{tex}% this sets \src@fname
    \src@before@file@hook{\src@fname}%
    \src@input{#2}%
    \src@after@file@hook{#1}%
}
\newcommand\Input{}
\let\Input\input
\ifsrc@everypar@
    \newcommand*\src@old@everypar{}
    \let\src@old@everypar\everypar
    \newtoks\src@new@everypar
    \let\everypar\src@new@everypar
    \everypar\expandafter{\the\src@old@everypar}
    \src@old@everypar{\the\src@new@everypar\src@spec}
\fi
\ifsrc@everymath@
    \def\@tempa#1\the\everymath#2\delimiter{{#1\src@spec\the\everymath#2}}
    \frozen@everymath=\expandafter\@tempa\the\frozen@everymath\delimiter
\fi
\newcommand*\src@bibliography{}
\newcommand*\src@@bibliography{}
\let\src@bibliography\bibliography
\def\bibliography#1{%
    \expandafter\src@@bibliography\expandafter{\CurrentInput}{#1}%
}
\def\src@@bibliography#1#2{%
    \src@before@file@hook{\jobname.bbl}%
    \src@bibliography{#2}%
    \src@after@file@hook{#1}%
}
\newcommand*\src@old@output{}
\let\src@old@output\output
\newtoks\src@new@output
\let\output\src@new@output
\output\expandafter{\the\src@old@output}
\src@old@output{\SRCOKfalse\the\src@new@output}
\endinput
%%
%% End of file `srcltx.sty'.
