diff options
author | Karl Berry <karl@freefriends.org> | 2010-04-29 23:59:41 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-04-29 23:59:41 +0000 |
commit | 20c4fb92a115f9fbb0362a9834d4fc56aa99adcb (patch) | |
tree | 15ea8d7fc92164bf75d7141553e058a3e541f6b1 /Master/texmf-dist/tex | |
parent | 8f6599a9f86ce52e246d5595a68700551208ee9c (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')
-rw-r--r-- | Master/texmf-dist/tex/latex/mylatexformat/mylatexformat.ltx | 284 |
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'. |