summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-29 23:59:41 +0000
committerKarl Berry <karl@freefriends.org>2010-04-29 23:59:41 +0000
commit20c4fb92a115f9fbb0362a9834d4fc56aa99adcb (patch)
tree15ea8d7fc92164bf75d7141553e058a3e541f6b1 /Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx
parent8f6599a9f86ce52e246d5595a68700551208ee9c (diff)
new package mylatexformat (29apr10)
git-svn-id: svn://tug.org/texlive/trunk@18049 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx')
-rw-r--r--Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx284
1 files changed, 284 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx b/Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx
new file mode 100644
index 00000000000..02454aaeec3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx
@@ -0,0 +1,284 @@
+%%
+%% This is file `mylatexformat.ltx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% mylatexformat.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% mylatexformat : 2010/04/30 v1.0 - Use mylatexformat.ltx to make a format based on the preamble of any LaTeX file
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work consists of the main source file mylatexformat.dtx
+%% and the derived files
+%% mylatexformat.ltx, mylatexformat.pdf, mylatexformat.ins
+%%
+%% mylatexformat - Use mylatexformat.ltx to make a format based on the preamble of any LaTeX file
+%% Copyright (C) 2010 by Florent Chervet <florent.chervet@free.fr>
+%%
+%%% _____________________________________________________________________
+%%% mylatexformat.ltx
+%%% ^^^^^^^^^^^^^^^^^
+%%% From an original idea by David Carlisle - mylatex.ltx 1994/09/27
+%%% © lppl 2010 - F Chervet - 2010/04/25
+%%% _____________________________________________________________________
+%%%
+%%% Use this file to make a format based on the preamble of any LaTeX
+%%% file.
+%%%
+%%% The format is made from the very beginning of the file up to either:
+%%% i) the command : \endofdump
+%%% placed in the preamble
+%%% ii) the command : \csname endofdump\endcsname
+%%% placed in the preamble
+%%% iii) \begin{document}
+%%% if \endofdump nor \csname endofdump\endcsname
+%%% haven't been found in the preamble.
+%%%
+%%% A format helps to speed up compilations, packages which have been
+%%% dumped in the format are loaded at very high speed.
+%%% --------------------------------------------------------------------
+%%% There are no restrictions on the distribution or modification of
+%%% this file, except that other people should not attempt to alter
+%%% the master copy on the ctan archives.
+%%%
+%%% Making the format --------------------------------------------------
+%%% ^^^^^^^^^^^^^^^^^ USING MikTeX
+%%% * With preloaded pdflatex format (pdf output) :
+%%% etex -initialize [opts] "&pdflatex" mylatexformat.ltx """abc.tex"""
+%%% => compile your document using :
+%%% pdflatex
+%%% or texify --tex-option=-output-format=pdf
+%%%
+%%% * With preloaded latex format (dvi output) :
+%%% etex -initialize [opts] "&latex" mylatexformat.ltx """abc.tex"""
+%%% => compile your document using
+%%% latex
+%%% or texify --tex-option=-output-format=dvi
+%%%
+%%% * With preloaded format xelatex (pdf output) :
+%%% xetex -initialize [opts] "&xelatex" mylatexformat.ltx """abc.tex"""
+%%% => compile your document using xelatex
+%%%
+%%% NOTA BENE: Please, notice the 3 quotes !
+%%% ^^^^^^^^^^
+%%%
+%%% In fact, 3 quotes are necessary only if you "file name.tex" contains a space !
+%%%
+%%% -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%%% Exemple of a command line for making format using pdfTeX :
+%%%
+%%% etex -initialize -interaction=nonstopmode
+%%% -save-size=20000 -stack-size=20000
+%%% -jobname="Mon Beau Format Perso"
+%%% "&pdflatex" mylatexformat.ltx "Mon Fichier TeX.tex"
+%%%
+%%% "Mon Beau Format Perso.fmt" (en Français dans le texte) will be created
+%%% (or overwritten) in the current working directory.
+%%%
+%%% Using the format ---------------------------------------------------
+%%% ^^^^^^^^^^^^^^^^^ USING MikTeX
+%%% Add the format to the very first line of your LaTeX file :
+%%% --> first line : %&"format file name"
+%%% without the .fmt extension.
+%%% [You may use the option : -dont-parse-first-line option
+%%% to avoid loading the format]
+%%% --------------------------------------------------------------------
+%% ____________________________________________________________________
+%% The following informations come from mylatex.ltx from David Carlisle:
+%% Given a LaTeX file `abc.tex', use initex as follows:
+%%
+%% initex &latex mylatexformat.ltx abc (Generic TeX)
+%% initex \&latex mylatexformat.ltx abc (unix and other TeX's)
+%% tex /i &latex mylatexformat.ltx abc (emtex)
+%%
+%% If you are on a Mac or using some shell that makes it inconvenient
+%% to use a command line such as the above examples then you may
+%% make a file `mylatex.tex' with the single line
+%% \input mylatex.ltx abc
+%% and then pass the file mylatex.tex to your (ini)tex shell to produce
+%% the format, ie something equivalent to initex &latex mylatex.tex.
+%%
+%% If you are using OzTeX, see the separate instructions below.
+%%
+%% This should make a format file mylatex.fmt which you can then use
+%% as follows
+%%
+%% Using the new format
+%% ^^^^^^^^^^^^^^^^^^^^
+%%
+%% tex &mylatex abc (generic TeX)
+%% virtex \&mylatex abc (Unix TeX)
+%%
+%% This will process your document, abc.tex, just as LaTeX does, but
+%% quicker as the contents of the preamble will be stored in the
+%% format file and will not need to be run each time.
+%%
+%% If (vir)tex fails to find your mylatex.fmt then it is not searching
+%% in the current directory, either modify your TEXFORMATS path (or
+%% equivalent) to search `.' or (on unix/dos) use ./ as in:
+%% virtex \&./mylatex abc
+%%
+%% Making and using the format with OzTeX
+%% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+%%
+%% Given a LaTeX file `abc.tex', do this: select `TeX...' from OzTeX's
+%% TeX menu, and go to the folder containing the file `abc.tex' as if you
+%% were selecting the file `abc.tex'. Then hit the Cancel button - this
+%% procedure sets OzTeX's working folder to the one containing abc.tex.
+%% Next, select iniTeX from the TeX menu, and type:
+%%
+%% &latex mylatex.ltx abc
+%%
+%% This should make a format file mylatex.fmt which you can save in the
+%% same folder as the file you're working on.
+%%
+%% To use the new format, put this at the very start of the very first
+%% line of your document:
+%%
+%% %&mylatex
+%%
+%% Further Notes
+%%
+%% The file abc.tex must contain a line *just* with
+%% \begin{document}
+%% Everything up to (but not including) the \begin{document} will
+%% be saved in the format and not executed in subsequent runs.
+%%
+%% If you are modifying the document (or working on a similar document)
+%% you may wish to add new commands to your document preamble.
+%% The `mylatex' format normally skips the whole preamble (believing
+%% it to be pre-loaded) and so such new commands do not take effect.
+%% You could re-make the format, preloading the new preamble, but that
+%% might be inconvenient to do every time, and so an alternative scheme
+%% has been introduced.
+%% If the preamble contains a comment mylatex (ie a line just
+%% containing a % white space and the word mylatex) then the mylatex
+%% format will start reading the preable at that point so any new
+%% commands can be placed after such a comment and they will be
+%% executed.
+%% --------------------------------------------------------------------
+%%\RequirePackage{etex}% RequirePackage may be used before the class
+%% In principle \openout stream= filename need not be space terminated,
+%% and need not be immediate, but this covers \makeindex \makeglossary
+%% and index package's \newindex which are all the cases of \openout
+%% that occur before \begin{document} that I could see.
+%% Thanks to Ross Moore for pointing out \AtBeginDocument is too late
+%% eg changebar package *closes* the stream in \AtBeginDocument, so need
+%% to make sure it is opened before that. Make a special purpose hook.
+%%
+%% Save the original definition.
+\makeatletter
+\let\etex@primitive@openout\openout
+\def\openout#1 {\g@addto@macro\MYLATEXopens{\immediate\etex@primitive@openout#1 }}
+\let\MYLATEXopens\@empty
+%% \begin is overloaded in order to stop \dump at begin document
+%% if the macro \endofdump is not given somewhere in the preamble.
+%% Rem: it is NOT POSSIBLE to redefine \document, for the macro
+%% \document is changed or patched by some classes or packages
+%% (auxhook, etoolbox etc.)
+\let\MYLATEX@latex@begin\begin
+\def\begin#1{%
+ \expandafter\ifx\csname#1\endcsname\document
+ \expandafter\expandafter\expandafter\endofdump\expandafter\@gobble
+ \else\expandafter\MYLATEX@latex@begin
+ \fi{#1}}
+%% The version of \document to use on the initex run.
+%% Just preloads some fonts, puts back \document and \openout,
+%% sets up the banner to display the file list of files preloaded,
+%% then sets up some special catcodes so the preamble will be
+%% skipped on normal runs with the new format.
+\def\endofdump{%
+%% Force some font preloading.
+ {\setbox\z@\hbox{%
+ $$% math (not bold, some setups don't have \boldmath)
+ \normalfont% normal
+ {\bfseries\itshape}{\itshape}\ttfamily\sffamily
+ \ifdefined\large\large\fi
+ \ifdefined\Large\Large\fi
+ \ifdefined\LARGE\LARGE\fi
+ \ifdefined\Huge\Huge\fi
+ \ifdefined\small\small\fi
+ \ifdefined\footnotesize\footnotesize\fi
+ \ifdefined\tiny\tiny\fi
+ }}%
+ \let\openout\etex@primitive@openout
+ \let\etex@primitive@openout\@undefined
+ \let\begin\MYLATEX@latex@begin
+ \let\MYLATEX@latex@begin\@undefined
+ \makeatother
+ \everyjob\expandafter{\the\everyjob
+ \begingroup
+ \listfiles
+ \expandafter\MYLATEXcustomised\@dofilelist
+ \endgroup}%
+ \catcode`\\=13\relax%
+ \let\endofdump\relax
+ \dump
+ }
+\edef\MYLATEXcustomised#1#2#3\typeout#4{%
+ \noexpand\typeout{==============================================================================}%
+ \noexpand\typeout{JOB NAME\noexpand\@spaces\noexpand\@spaces\noexpand\space\noexpand\space:%
+ \string"\noexpand\jobname\string"}%
+ \noexpand\typeout{CUSTOMISED FORMAT :\string"\jobname\string"}%
+ \noexpand\typeout{PRELOADED FILES:}%
+ #3%
+ \noexpand\typeout{==============================================================================}%
+ \noexpand\typeout{(mylatexformat)Info: starting reading document%
+ \string"\noexpand\jobname\string"}%
+}
+%% While the preamble is being skipped (inside a group)
+%% the EOL is active and defined to grab each line and
+%% inspect it looking for :
+%% \endofdump
+%% or \csname endofdump\endcsname
+%% or \begin{document}.
+%%
+%% The special catcodes required are not enabled until after the
+%% first TeX command in the file, so as to avoid problems with
+%% the special processing that TeX does on the first line, choosing
+%% the format, or the file name etc.
+{% Entering simple groupe (level 1) => skip the preamble
+\catcode`\^^M=\active%
+ \catcode`\/=0 %
+ /catcode`\\=13 %
+ /catcode`/& 8 %
+ /gdef\{/catcode`/\=0 /catcode`/^^M=13 ^^M}% /catcode`/%=9 ^^M}%
+%%
+ /long/gdef^^M{/begingroup%
+ /long/def/MYLATEX@endofdump##1/endofdump##2##3&##4##5##6/MYLATEX{##5}%
+ /long/def/MYLATEX@endofdump@cs##1/csname endofdump/endcsname##2##3&##4##5##6/MYLATEX{##5}%
+ /long/def/MYLATEX@document ##1document##2##3&##4##5##6/MYLATEX{##5}%
+ /long/def/MYLATEX@begindocument##1/begin##2##3/MYLATEX##4{%
+ /MYLATEX@document ##2document&&{/MYLATEX@start1{##4}}{^^M}/MYLATEX}%
+ /long/def/MYLATEX@start##1##2{%
+ /typeout{(mylatexformat)/@spaces/space/on@line./space(%
+ /ifcase##1 /string/endofdump/else/string/begin{document}/fi)}%
+ /typeout{==============================================================================}%
+ /endgroup%
+ /catcode`/^^M=5/relax%
+ /let^^M/par%
+ /MYLATEXopens##2}%
+ /long/gdef^^M##1^^M{%
+ /MYLATEX@endofdump##1/endofdump&&%
+ {/MYLATEX@start0{##1}}%
+ {/MYLATEX@endofdump@cs##1/csname endofdump/endcsname&&%
+ {/MYLATEX@start0{##1}}%
+ {/MYLATEX@begindocument##1/begin/relax/MYLATEX{##1}}%
+ /MYLATEX}%
+ /MYLATEX}%
+ ^^M}%
+}% Leaving simple groupe (level 1) => start reading document
+%% Trick lookahead to allow mylatex.ltx and the document filename to be
+%% given on the same command line. (initex &latex mylatex.ltx {abc.tex})
+\expandafter\input\endinput%
+\endinput
+%%
+%% End of file `mylatexformat.ltx'.