Filecontents
Revision as of 20:02, 8 August 2009 by Wolfgang Schuster (talk | contribs) (New interface for messages)
LaTeX provides a filecontent
environment to embed text in your document
which is written to a external document when your process it. The filename is given with
the argument for the environment.
You could define a environment for the same effect with the buffer mechanism, the code for such a environment is:
\unprotect \definemessageconstant {filecontents} \startinterface all \setinterfacemessage{filecontents}{title}{filecontents} \setinterfacemessage{filecontents}{1} {Overwriting file --} \setinterfacemessage{filecontents}{2} {Writing file --} \stopinterface \def\startfilecontents {\begingroup \protectbuffersfalse \dostartfilecontents} \def\dostartfilecontents[#1]% {\doiffileexistselse{#1} {\showmessage\m!filecontents{1}{#1}} {\showmessage\m!filecontents{2}{#1}}% \beforesplitstring#1\at.\to\filename \aftersplitstring #1\at.\to\extension \let\f!temporaryextension\extension \dostartbuffer[\filename][startfilecontents][stopfilecontents]} \def\stopfilecontents {\doifmode{mkiv}{\savebuffer[\filename]\ctxlua{file.copy("\jobname-\filename.tmp","\filename.\f!temporaryextension")}}% \endgroup} \protect
You could use this environment in your document in the following way.
\startfilecontents[song.txt] If I could choose my paradise, And please myself with choice of bliss, Then I would have your soft blue eyes And rosy little mouth to kiss! Your lips, as smooth and tender, child, As rose-leaves in a coppice wild. If fate bade choose some sweet unrest, To weave my troubled life a snare, Then I would say "her maiden breast And golden ripple of her hair;" And weep amid those tresses, child, Contented to be thus beguiled. (Thomas Asche - No and Yes) \stopfilecontents