You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.8 KiB
Markdown

# ifprintedition
A small package that emulates the behaviour of `ifdraft`
but for two other documentclass options, namely,
`webedition` (the implicit default) and `printedition`.
## Package development
The `.dtx` file is the source, in combination with the `.ins` file.
**Step 1**: generate the `.sty` file using TeX: `tex ifprintedition.ins`
```
taha@luxor:/usr/local/texlive/texmf-local/tex/latex/ifprintedition
$ tex ifprintedition.ins
This is TeX, Version 3.141592653 (TeX Live 2023) (preloaded format=tex)
(./ifprintedition.ins
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/docstrip.tex
Utility: `docstrip' v2.6b <2022-09-03>
English documentation <2022-09-03>
**********************************************************
* This program converts documented macro-files into fast *
* loadable files by stripping off (nearly) all comments! *
**********************************************************
********************************************************
* No Configuration file found, using default settings. *
********************************************************
)
Generating file(s) ifprintedition.sty
Processing file ifprintedition.dtx (package) -> ifprintedition.sty
File ifprintedition.dtx ended by \endinput.
Lines processed: 127
Comments removed: 88
Comments passed: 0
Codelines passed: 31
************************************************************************
*
* To finish the installation you have to move the following
* file into a directory searched by TeX:
*
* ifprintedition.sty
*
* To produce the documentation run the file `ifprintedition.drv'
* through LaTeX.
*
* Happy TeXing!
*
************************************************************************
)
No pages of output.
Transcript written on ifprintedition.log.
```
The above command requires interactively pressing `y` to allow it
to overwrite an already existing `ifprintedition.sty` file, which
is very annoying.
> Ok, I added `\askforoverwritefalse` to the `ins` file, this successfully overrides
> the interactive confirmation step.
**Step 2**: generate PDF documentation from `dtx` using LaTeX: `pdflatex ifprintedition.dtx`
```
taha@luxor:/usr/local/texlive/texmf-local/tex/latex/ifprintedition
$ pdflatex ifprintedition.dtx
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
./ifprintedition.dtx
LaTeX2e <2022-11-01> patch level 1
L3 programming layer <2023-02-22>
/usr/local/texlive/2023/texmf-dist/tex/latex/base/ltxdoc.cls
Document Class: ltxdoc 2022/06/22 v2.1i Standard LaTeX documentation class
*************************************
* Local config file ltxdoc.cfg used
*************************************
[...]
***************************
* Character table correct *
***************************
[1{/usr/local/texlive/2023/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
No file ifprintedition.ind.
**********************************
* This macro file has no checksum!
* The checksum should be 23!
**********************************
No file ifprintedition.gls.
```
Now is a good time to edit the `% \CheckSum{0}` line in the `dtx` file
with the correct number.
> Note, during development you might want to reset to `\CheckSum{0}` to
> avoid compilation errors and having to reset it manually on every re-compile.
And you might want to use `latexmk -pdf ...` instead of `pdflatex ...`
to run the requisite number of compilations and also generate index, etc.
## In your documentclass file
This package works in conjunction with the following settings in
[my LuaUUThesis class](https://git.solarchemist.se/config/texmf-latex/src/branch/master/LuaUUThesis.cls) (summarised below):
```
\newif\if@webedition
\newif\if@printedition
% set webedition by default
\@webeditiontrue
\@printeditionfalse
\DeclareOption{webedition}{
\PassOptionsToClass{\CurrentOption}{book}
\@webeditiontrue
\@printeditionfalse
}
\DeclareOption{printedition}{
\PassOptionsToClass{\CurrentOption}{book}
\@printeditiontrue
\@webeditionfalse
}
```
You will need to set something similar in your own documentclass for the
`\ifprintedition{}{}` commands to have any effect.
## Links
+ https://tex.stackexchange.com/questions/351644/use-latexmk-on-dtx-file-and-then-run-it-again-on-the-tex-files-it-creates
+ https://aperiodical.com/2019/03/realhats-writing-a-latex-package/
+ https://tex.stackexchange.com/questions/21262/what-do-firstoftwo-and-secondoftwo-do
+ https://en.wikibooks.org/wiki/LaTeX/Creating_Packages
+ https://ftpmirror1.infania.net/mirror/CTAN/info/dtxtut/dtxtut.pdf
+ https://tex.stackexchange.com/questions/34175/how-do-i-create-a-latex-package
+ https://www.overleaf.com/learn/latex/Writing_your_own_package
+ https://tex.stackexchange.com/questions/21909/classes-and-packages-whats-the-difference
+ https://tex.stackexchange.com/questions/74941/add-option-to-class-with-command