X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["5536" "Thu" "20" "July" "1995" "11:05:21" "-0300" "David Carlisle" "carlisle@CS.MAN.AC.UK" nil "137" "Re: latex/1600: LaTeX2e licensing terms" "^Date:" nil nil "7" nil nil nil nil] nil) Received: from MZDMZA.ZDV.UNI-MAINZ.DE (vzdmzj.zdv.Uni-Mainz.DE [134.93.8.16]) by trudi.zdv.Uni-Mainz.DE (8.6.12/8.6.12) with ESMTP id MAA29872 for ; Thu, 20 Jul 1995 12:07:58 +0200 Received: from DIRECTORY-DAEMON by MZDMZA.ZDV.UNI-MAINZ.DE (PMDF V5.0-3 #4432) id <01HT3CGVS7M89D4H1C@MZDMZA.ZDV.UNI-MAINZ.DE> for schoepf@goofy.zdv.uni-mainz.de; Thu, 20 Jul 1995 12:07:52 +0100 Received: from listserv.gmd.de (listserv.gmd.de) by MZDMZA.ZDV.UNI-MAINZ.DE (PMDF V5.0-3 #4432) id <01HT3CGRAO1S8WWE8O@MZDMZA.ZDV.UNI-MAINZ.DE> for schoepf@Uni-Mainz.DE; Thu, 20 Jul 1995 12:07:48 +0100 Received: from listserv.gmd.de by listserv.gmd.de (LSMTP for OpenVMS v0.1a) with SMTP id E18676AD ; Thu, 20 Jul 1995 12:07:42 +0200 Received: from VM.URZ.UNI-HEIDELBERG.DE by VM.URZ.UNI-HEIDELBERG.DE (LISTSERV release 1.8b) with NJE id 5333 for LATEX-L@VM.URZ.UNI-HEIDELBERG.DE; Thu, 20 Jul 1995 12:07:09 +0000 Received: from DHDURZ1 (NJE origin SMTP@DHDURZ1) by VM.URZ.UNI-HEIDELBERG.DE (LMail V1.2a/1.8a) with BSMTP id 1685; Thu, 20 Jul 1995 12:06:39 +0000 Received: from m1.cs.man.ac.uk by vm.urz.Uni-Heidelberg.de (IBM VM SMTP V2R2) with TCP; Thu, 20 Jul 1995 12:06:36 +0100 (CET) Received: from r8h.cs.man.ac.uk by m1.cs.man.ac.uk (4.1/SMI-4.1:AL5l) id AA07499; Thu, 20 Jul 1995 11:05:23 -0300 (BST) Reply-to: Mailing list for the LaTeX3 project Message-id: <9507201005.AA24678@r8h.cs.man.ac.uk> MIME-version: 1.0 Content-type: TEXT/PLAIN; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Date: Thu, 20 Jul 1995 11:05:21 -0300 (BST) From: David Carlisle Sender: Mailing list for the LaTeX3 project To: Multiple recipients of list LATEX-L Subject: Re: latex/1600: LaTeX2e licensing terms Status: R X-Status: X-Keywords: X-UID: 1700 Richard Stallman just asked me to forward the following message to latex-l. I shall put the full text of his message, followed by some comments in reply from me after =========================== David =========================== From: Richard Stallman To: carlisle@cs.man.ac.uk Subject: Re: latex/1600: LaTeX2e licensing terms Date: Thu, 20 Jul 1995 02:42:40 -0400 [Would you please forward this to latex-l, since I cannot send to it directly?] On 26 June, you sent me a message describing two ways of effectively customizing how LaTeX handles article.sty (see below). I think these two methods are adequate to permit customization and therefore to make LaTeX free software. But I don't know enough to be completely sure. I have a question about each one. Whenever it starts up, and the `initex' file is called something other that latex.ltx, say fsflatex.ltx then the user can be suppled with an option of using `latex' or `fsflatex' commands on a standard LaTeX document to achieve different typesetting effects. The fsflatex format could do whatever you wanted but in particular it might have redefined \documentclass so that \documentclass{article} loads article.fsf (if that file exists) in preference to the standard article.cls. Or any other modification you care to choose. This method seems sufficient, provided that TeX provides a way to check silently whether foo.fsf exists. I don't know of one. Is there one? So once the fsfcustom package is written, you can distribute the following shell script `fsflatex' (for unix but easily ported) #!/bin/sh latex "\AtBeginDocument{\usepackage{fsfcustom}} \input" $* This method would work, provided there is a way for fsfcustom to check which document class was specified, and do different things accordingly. Is that easy to do? Here's what you sent me on 26 June: ====================================================================== So one way of making a customisation is to modify the article class to fsfarticle. This is a reasonable way of making a `new class' but as you say, it is an inconvenience if the intention is to differently format documents that are marked up to use article class, as all such documenmts would need to be modified. However one may instead *modify the format source files* As long as the typeout banner is changed so that it says something like LaTeX2e (FSF version) 1995/06/01 Whenever it starts up, and the `initex' file is called something other that latex.ltx, say fsflatex.ltx then the user can be suppled with an option of using `latex' or `fsflatex' commands on a standard LaTeX document to achieve different typesetting effects. The fsflatex format could do whatever you wanted but in particular it might have redefined \documentclass so that \documentclass{article} loads article.fsf (if that file exists) in preference to the standard article.cls. Or any other modification you care to choose. Actually though, I prefer a second way of providing the user with an `alternative LaTeX'. You may place whatever customisations you want in a package file, say fsfcustom.sty so that using standard LaTeX one would apparently need to edit \documentclass{article} \documentclass{article} ... ... \usepackage{fsfcustom}%%%%%%<<<<< \begin{document} to \begin{document} ... ... \end{document} \end{document} However there is no need to edit the files, as long as the operating system has even the most basic scripting language, as you can use the fact that TeX can read from the command line. So once the fsfcustom package is written, you can distribute the following shell script `fsflatex' (for unix but easily ported) #!/bin/sh latex "\AtBeginDocument{\usepackage{fsfcustom}} \input" $* I use basically this technique to supply local users with a `pslatex' command that uses Adobe fonts on documents rather than the standard TeX Computer Modern fonts. This method of making a customised LaTeX command has the big advantage that a user can send her file to a user of standard LaTeX, just by adding the \usepackage{fsfcustom} line to the document (and sending the fsfcustom package along with the document file) =========================================================================== [ back to me ...] Richard. Yes the two sketches that I sent were just basic examples. As you say, in a `production' version you would probably want conditional code depending on whether a file exists or what class was loaded etc. Fortunately LaTeX makes this particularly easy as it has the following constructs \IfFileExists{filename}{yes code}{no code} \@ifclassloaded{class names}{yes code}{no code} What I had in mind was that cfgguide.tex (which describes the customisation possibilities of LaTeX) could have a final section saying something like (expanded into grammatical English:-). If you need to make a version of LaTeX that differs from the standard version in ways that are not possible using the above configuration possibilities then you may do this as long as you read modguide.tex, respect file name changing rules in legal.txt and change relevent typeout banners and give the modified command a name other than latex. Followed by a couple of `worked examples' as in the above mail message. David