\NeedsTeXFormat{LaTeX2e}[1994/12/01] %% \newcommand* etc. \ProvidesPackage{blog}[2011/01/24 v0.4 simple fast HTML (UL)] %% copyright (C) 2010 2011 Uwe Lueck, %% http://www.contact-ednotes.sty.de.vu %% -- author-maintained in the sense of LPPL below. %% %% This file can be redistributed and/or modified under %% the terms of the LaTeX Project Public License; either %% version 1.3c of the License, or any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% We did our best to help you, but there is NO WARRANTY. %% %% Please report bugs, problems, and suggestions via %% %% http://www.contact-ednotes.sty.de.vu %% %% == Processing == %% We are building on the 'fifinddo' package: \RequirePackage{fifinddo} %% |\BlogCopyFile[]{}| %% ``copies" the \TeX\ source file %% into the file specified by `\ResultFile'. %% As in \TeX\ an empty line starts a new paragraph, %% we ``interpret" an empty source line as %% HTML tag \xmltagcode{p} for starting a new paragraph. %% Empty source lines following some first empty source %% line immediately are ignored %% (``compression" of empty lines).---However, %% I am not entirely sure that this won't have %% unwanted effects, so it must be required %% explicitly by |\BlogAutoPars|, or by calling the %% package with option |[autopars]|. %% In the latter case, it can be turned off by %% |\noBlogAutoPars| \newif\ifBlogAutoPars \newcommand*{\BlogAutoPars}{\BlogAutoParstrue} \newcommand*{\noBlogAutoPars}{\BlogAutoParsfalse} \DeclareOption{autopars}{\BlogAutoPars} \ProcessOptions \MakeOther\< \MakeOther\> %% TODO ... \newcommand*{\BlogCopyFile}[2][]{% \ProcessFileWith[\BlogCodes #1]{#2}{% \IfFDinputEmpty {\IfFDpreviousInputEmpty \relax {\WriteResult{\ifBlogAutoPars

\fi}}}% \CopyLine }% } %% For a while, line endings swallowed inter-word spaces, %% until I found the setting of `\endlinechar' %% ('fifinddo''s default is `-1') %% in |\BlogCodes|: \newcommand*{\BlogCodes}{% %% 2010/09/07 \endlinechar`\ \catcode`\~\active \BasicNormalCatCodes} %% The tilde is active as in Plain~TeX too, it is so natural to %% use it for abbreviating HTML's ` '! %% %% == General HTML Matters == %% The following stuff is required for any web page %% (or hardly evitable). %% === General Tagging === %% $$|\TagSurr{}{}{}|$$ %% (I hoped this way code would be more readable %% than with `\TagSurround' ...) %% and $$|\SimpleTagSurr{}{}|$$ %% are used to avoid repeating element names in %% definitions of \TeX\ macros that refer to ``entire" %% elements---as opposed to elements whose content often %% spans lines (as readable HTML code). %% We will handle the latter kind of elements %% using \LaTeX's idea of ``environments." %% `\TagSurr' also inserts specifications of element %% \textbf{attributes}, %% [TODO: 'wiki.sty' syntax would be so nice here] %% while `\SimpleTagSurr' is for elements used without %% specifying attributes. |\STS| is an abbreviation for %% `\SimpleTagSurr' that is useful as the `\SimpleTagSurr' %% function occurs so frequently: \newcommand*{\SimpleTagSurr}[2]{<#1>#2} \newcommand*{\STS}{} \let\STS\SimpleTagSurr %% 2010/05/23 \newcommand*{\TagSurr}[3]{<#1 #2>#3} %% %% === Attributes === %% Inspired by the common way to use `@' for referring %% to element attributes---i.e., `@' refers to attribute %% `'---in HTML/XML documentation, we often use %% $$`\@{}' \qquad %% \mbox{to ``abbreviate"}\qquad `=""'$$ %% within the starting tag of an HTML element. %% This does not really %% make typing easier or improve readability, %% it rather saves \TeX's memory by using a single token %% for referring to an attribute. %% This ``abbreviation" is declared by %% |\declareHTMLattrib{}|, even with a check %% whether `\@' has been defined before: \newcommand*{\declareHTMLattrib}[1]{% \def\reserved@a{@#1}% \@ifundefined{@#1}% % {\@namedef{@#1}##1{ #1="##1"}}% {\@namedef{@#1}##1{#1="##1"}}% \@notdefinable} %% So after `\declareHTMLattrib{}', `\@' is a %% \TeX\ macro expecting one parameter for the specification. %% %% A few frequent attributes are declared this way here. %% |@href| is most important for that ``hyper-text:" \declareHTMLattrib{href} %% ... and |@name| (among other uses) is needed for %% hyper-text anchors: \declareHTMLattrib{name} %% 2010/11/06 % \expandafter\show\csname @href\endcsname %% |@bgcolor| and other attributes following are especially used %% in formatting \textbf{tables}: \declareHTMLattrib{bgcolor} %% Of course, conflicts may occur, as the form %% `\@' of macro names is used for internal %% (La)\TeX\ macros. %% Indeed, `\@width' that we want to have for the |@width| %% attribute already ``abbreviates" %% \TeX's ``keyword" (\TeX book p.~61) %% 2010/11/27 %% `width' in \LaTeX\ %% (for specifying the width of a `\hrule' or `\vrule' from \TeX; %% again just saving \TeX\ tokens rather than for readibility). \PackageWarning{blog}{Redefining \protect\@width} \let\@width\relax \declareHTMLattrib{width} %% Same with |@height|: \PackageWarning{blog}{Redefining \protect\@height} \let\@height\relax \declareHTMLattrib{height} %% 2010/07/24 %% We can enumerate the specifications allowed for %% |@align| ... actually it isn't used/introduced here ... %% we just abbreviate (indeed!) entire attribute specifications: \newcommand*{\@align@c}{align="center"} %% 2010/08/03 \newcommand*{\@align@l}{align="left"} %% 2010/07/17 \newcommand*{\@align@r}{align="right"} %% Some other uses of `\declareHTMLattrib' essential for %% tables: \declareHTMLattrib{cellpadding} %% 2010/07/18 \declareHTMLattrib{cellspacing} %% 2010/07/18 \declareHTMLattrib{colspan} %% 2010/07/17 \declareHTMLattrib{frame} %% 2010/07/24 %% \textbf{Another problem} with this namespace idea is that %% \emph{either} this reference to attributes cannot be used in %% ``author" source files for generating HTML---\emph{or} `@' %% cannot be used for ``private" (internal) macros. %% Cf. |\ContentAtt| for \xmltagcode{meta} tags ... %% well, not so bad, as the main purpose of this namespace %% is saving tokens \emph{in macros.} %% %% === HTML's Special Symbols === %% |#| is needed for numerical specifications in HTML, %% especially colors and Unicode symbols, %% while it plays a different (essential) role in our %% definitions of \TeX\ macros here. %% We redefine \LaTeX's |\#| %% for a kind of ``quoting" `#' in macro definitions %% in order to refer to their HTML meaning.---I \textbf{wonder} %% what I had in mind with the |&| things here. %% I cannot find any use of |\AmpMark| in my code %% (including my web pages). There is no real problem %% with calling special HTML symbols, `&' is simply %% made `other' already here for macros calling those symbols %% (below), and in processing source files, it is as well %% `other' by default. The symbols section, however, redefines |\&| %% for calling HTML's ampersand symbol. {\catcode`\&=12 \catcode`\#=12 \gdef\AmpMark{&} \gdef\#{#}} %% ... `\CompWordMark' etc.? %% %% === Head === %% |\head| produces the first two tags that an HTML file must start %% with (we sometimes use `^^J' for line breaks in the HTML file %% to get some readibility of the generated code): \newcommand*{\head}{} %% ^^J rm 2010/10/10 %% |\MetaTag{}| and |\ContentAtt{}| %% are internal shortcuts: \newcommand*{\MetaTag}[1]{\space\space} \newcommand*{\ContentAtt}[1]{content="#1"} %% |\charset{}| \newcommand*{\charset}[1]{% \MetaTag{http-equiv="Content-Type" \ContentAtt{text/html; #1}}} %% |\description{}| for web searches (I think): \newcommand*{\description}[1]{% \MetaTag{\@name{description} \ContentAtt{#1}}} %% ... an outright \textbf{mistake!} The definition is overridden %% to get the HTML equivalent to \LaTeX's `description' environment. %% `\newcommand' did not warn here because we don't load any \LaTeX\ %% class for text-processing macros and code generation.---And so %% some |\MetaDescr| should be defined---and used finally! %% %% |\robots{}|: \newcommand*{\robots}[1]{%% juergenf: index, follow, noarchive \MetaTag{\@name{robots} \ContentAtt{#1}}} %% |\stylesheet{}{}| !? \newcommand*{\stylesheet}[2]{% \space\space %% 2010/09/10 } %% With |\title{}|, heads %% grammar? TODO 2010/04/08 %% the browser window: \renewcommand*{\title}[1]{\space\space#1} %% %% === Body === %% |\body| separates the `head' element from the `body' element %% of the page. \newcommand*{\body}{} %% |\topofpage| generates an anchor `top-of-page': \newcommand*{\topofpage}{\hanc{top-of-page}{}} %% |\finish| finishes the page, closing the `body' and `html' %% elements. \newcommand*{\finish}{} %% %% %% == Fonts == %% |\heading{}{}| prints with size dependent %% on . The latter may be one out of `1', `2', `3', `4' %% (I think). \newcommand*{\heading}[1]{\SimpleTagSurr{h#1}} %% ... I might use `\section' etc. one day, I made `\heading' %% when I could not control the sizes of the section titles %% properly and decided first to experiment with the level numbers. %% %% We ``re-use" some \LaTeX\ commands for specifying font attributes, %% rather than (re)defining macros `\i', `\b', `\tt', ... %% $$|\textit{}| \qquad %% \mbox{just expands to}\qquad %% \xmltagcode{i}\xmltagcode{/i}$$ \renewcommand*{\textit}{\SimpleTagSurr i} %% etc. for |\textbf|, |\texttt| ...: \renewcommand*{\textbf}{\SimpleTagSurr b} \renewcommand*{\texttt}{\SimpleTagSurr{tt}} %% 2010/06/07 %% |\textcolor| is from \LaTeX's 'color' package %% that we won't load for generating HTML, %% so it is ``new" here, it is just natural to use it %% for colored text (2010/05/15): \newcommand*{\textcolor}[1]{\TagSurr{font}{color="#1"}} %% |\code{}| is different than the former font commands, %% it is \emph{not} a standard \LaTeX\ macro. %% It is similar to `\verb', which however doesn't work with %% a pair of curly braces. The macro name rather is derived %% from the HTML element name `code': \newcommand*{\code} {\SimpleTagSurr{code}} %% 2010/04/27 %% |\emph{}| is \LaTeX's command again, but somewhat abused, %% expanding to \lq\xmltagcode{em}\xmltagcode{/em}\rq: \renewcommand*{\emph} {\SimpleTagSurr{em}} %% ... Note that \LaTeX's `\emph' feature of switching to `up' %% when `\emph' appears in an italic context doesn't work here ... %% %% |\strong{}| again just calls an HTML element. %% It may behave like `\textbf{}', or ... I don't know ... \newcommand*{\strong} {\SimpleTagSurr{strong}} %% %% == Environments == %% We reduce \LaTeX's |\begin| and |\end| to their most primitive %% core. %% \begin{description} %% \cmdboxitem|\begin{}| just executes the macro `\', %% and %% \cmdboxitem|\end{}| just executes the macro `\end'. %% \end{description} %% %% They don't constitute a group with local settings. %% Indeed, the present (2010/11/07) version of 'blog.sty' %% does not allow any assignments while ``copying" %% the \TeX\ source into the `.htm'. %% There even is no check for proper nesting. %% `\begin' and `\end' just represent HTML elements %% (their starting/ending tags) %% that typically have ``long" content. %% (We might ``intercept" `\begin' and `\end' before %% copying for executing some assignments in a future version.) \let\begin\@nameuse \def\end#1{\csname end#1\endcsname} %% |{center}|---TODO cf. \xmltagcode{center} 2010/07/18: \renewenvironment*{center}{

}{

} %% ... moving |{english}| to `xmlprint.cfg' %% 2010/05/22 ...%% doc 2010/11/06 %% %% As formerly with ``fonts," we have \emph{two} policies for %% \textbf{choosing macro names}: %% (i)~using an \emph{existing} HTML element name, %% (ii)~using a \LaTeX\ command name for accessing a somewhat %% similar HTML element having a \emph{different} name. %% %% |\declareHTMLelement{}| creates a \emph{new} %% ``environment" according to policy~(i): \newcommand*{\declareHTMLelement}[1]{% \newenvironment*{#1}{<#1>}{}} %% |\renderHTMLelement{}{}| \emph{redefines} %% \LaTeX's environment to use HTML's element %% according to policy~(ii): \newcommand*{\renderHTMLelement}[2]{% \renewenvironment*{#1}{<#2>}{}} %% Applying former auxiliaries: %% %% `\small' is a \LaTeX\ command from a \emph{class}---that %% we won't load, therefore we can create a \emph{new} %% |{small}| environment using \xmltagcode{small} according to %% policy~(i): \declareHTMLelement{small} %% The next definitions for |{enumerate}|, |{itemize}|, %% `{verbatim}' follow policy~(ii): \renderHTMLelement{enumerate}{ol} \renderHTMLelement{itemize} {ul} %% %% 2010/11/16: %% With 'blog.sty', |{verbatim}| really doesn't work much %% like its original \LaTeX\ variant. \TeX\ macros inside %% still are expanded, and you must care yourself for %% wanted \dqtd{quoting}: \renderHTMLelement{verbatim} {pre} %% 2010/09/10 %% %% |{quote}| is defined in \LaTeX\ classes only again. %% To use it for policy~(ii), we give it a dummy definition %% so `\render'... won't complain: \let\quote\empty \renderHTMLelement{quote} {blockquote} %% For list |\item|s, I tried to get readable HTML code %% using `\indenti'. This fails with nested lists. %% The indent could be increased for nested lists %% if we supported assignments with `\begin' and `\end'. \renewcommand*{\item}{\indenti
  • } %% <- 2010/05/23, 2010/06/10 -> % \renewcommand*{\item}{
  • } %% \LaTeX's |{description}| environment redefines the %% label format for the optional argument of `\item'. %% Again, \emph{we} cannot do this here %% (we even cannot use optional arguments, %% at least not easily). %% Instead we define a different |\ditem{}| %% having a \emph{mandatory} argument. %% %% 2010/07/05: \renderHTMLelement{description}{dl} \newcommand*{\ditem}[1]{\indenti
    \strong{#1}
    } %% %% == Links == %% === Basic Link Macros === %% |\hanc{}{}| makes an anchor with %% HTML label (like 'hyperref''s `\hypertarget'): \newcommand*{\hanc}[1]{\TagSurr a{\@name{#1}}} %% |\hancref{}{}{}| makes an anchor with %% HTML label and at the same time a link to : \newcommand*{\hancref}[2]{\TagSurr a{\@name{#1} \@href{#2}}} %% |\href{}{}| makes a link to : \newcommand*{\href}[1]{\TagSurr a{\@href{#1}}} %% %% === Special cases of Basic Link Macros === %% |\autanc{}| creates an anchor where is %% the text and the internal label at the same time: \newcommand*{\autanc}[1]{\hanc{#1}{#1}} %% 2010/07/04 %% |\ancref{}{}| makes a link to %% an anchor on the same web page. %% This is especially useful for a ``table of contents"---a %% list of links to sections of the page. \newcommand*{\ancref}[1]{\href{\##1}} %% |\autref{}| makes a link to an anchor %% named itself: \newcommand*{\autref}[1]{\ancref{#1}{#1}} %% 2010/07/04 %% %% === Italic Variants === %% Some of the link macros get ``emphasized" or ``italic" %% variants. Originally I used ``emphasized," later I decided %% to replace it by ``italic," as I found that I had used %% italics for another reason than emphasizing. %% E.g., may be \qtd{bug,} and I am not referring to %% some bug, but to the Wikipedia article \textit{Bug.} %% This has been inspired by some Wikipedia typography convention %% about referring to titles of books or movies. %% (The `em'\,->\,`it' replacement has not been completed yet.) % \newcommand*{\emhref}[2]{\href{#1}{\emph{#2}}} \newcommand*{\ithref}[2]{\href{#1}{\textit{#2}}} \newcommand*{\itancref}[2]{\ancref{#1}{\textit{#2}}}%% 2010/05/30 \newcommand*{\emancref}[2]{\ancref{#1}{\emph{#2}}} %% %% === Built Macros for Links to Local Files === %% Originally, I wanted to refer to my web pages only, %% using $$|\fileref{}|.$$ I have used %% extension `.htm' to avoid disturbing my Atari %% editor 'xEDIT' or the the Atari emulator (Hatari). %% I could switch to `.html' some time using symbolic links. %% The extension I actually use is stored as macro %% |\htext| in a more local file (e.g., `.cfg').---Later %% I realized that I may want to refer to local files %% other than web pages, and therefore I introduced a more %% general |\FileRef{}|. %% \textbf{Only now (v0.2) I realize} %% it's just the same as |\href|! \newcommand*{\FileRef}[1]{\TagSurr a{\@href{#1}}} %% <- 2010/09/11 -> \newcommand*{\fileref}[1]{\FileRef{#1\htext}} % \newcommand*{\emfileref}[2]{\fileref{#1}{\emph{#2}}} \newcommand*{\itfileref}[2]{\fileref{#1}{\textit{#2}}} %% |\fileancref{}{}| links to %% anchor on web page : \newcommand*{\fileancref}[2]{% \TagSurr a{\@href{#1\htext\##2}}} % \newcommand*{\emfileancref}[3]{\fileancref{#1}{#2}{\emph{#3}}} %% <- 2010/05/31 -> \newcommand*{\itfileancref}[3]{\fileancref{#1}{#2}{\textit{#3}}} %% %% === Built Macros for Links to Remote Files === %% 'blog.sty' currently (even 2011/01/24) implements my style %% \emph{not} to open a new browser window or tab for \emph{local} %% files but to open a new one for \emph{remote} files, i.e., %% when a file is addressed by a full URL. For the latter case, %% there is \[|\httpref{}{}|\] making %% a link to `http://': % \newcommand*{\httpref}[1]{\href{http://#1}} \newcommand*{\httpref}[1]{% %% 2010/04/11 \TagSurr a{\@href{http://#1" target="_blank}}} %% With v0.4, macros based on `\httpref' are moved to 'texlinks.sty': \RequirePackage{texlinks} %% Former |\urlref| appears as |\urlhttpref| there ... \newcommand \urlref {} \let\urlref\urlhttpref %% ... and |\ctanref| has been replaced by `\tugctanref'. %% Let's go on playing with the difference ... \newcommand*{\ctanref}[1]{\httpref{ctan.org/tex-archive/#1}} %% %% %% == Symbols == %% |&| is made `other' for using it to call HTML's ``character %% entities". \@makeother\& %% Again we have the two policies about choosing macro names %% and respectively two new definition commands. %% |\declareHTMLsymbol{}| defines a macro `\' %% expanding to `&;'. Checking for prior definedness %% hasn't been implemented yet. (TODO) \newcommand*{\declareHTMLsymbol}[1]{\@namedef{#1}{}} %% |\renderHTMLsymbol{}{}| \emph{redefines} %% macro to expand to `&;': \newcommand*{\renderHTMLsymbol} [2]{\renewcommand*{#1}{}} %% These auxilaries applied: |\ccedil| (TODO re-order) ... \declareHTMLsymbol{ccedil} %% 2010/08/17 %% Arrows: |\gets|, |\to|, |\uparrow|, |\downarrow| ... \renderHTMLsymbol {\gets} {larr} \renderHTMLsymbol {\to} {rarr} \renderHTMLsymbol {\uparrow} {uarr} %% 2010/09/15 \renderHTMLsymbol {\downarrow}{darr} %% 2010/09/15 %% \verb+>+ and \verb+<+: |\gt|, |\lt| ... \declareHTMLsymbol{gt} %% greater than 2010/06/13 \declareHTMLsymbol{lt} %% less than 2010/06/13 %% Redefinitions of |\&| and |\%| %% (well, `\PercentChar' is 'fifinddo's version of %% \LaTeX's `\@percentchar'): \renderHTMLsymbol {\&} {amp} \let\%\PercentChar %% 2010/07/01 %% Horizontal ellipsis: |\dots| ... \renderHTMLsymbol {\dots} {hellip} %% The tilde |~| is used for its wonderful purpose, %% by analogy to \TeX: \renderHTMLsymbol {~} {nbsp} %% But now we need a replacement |\tilde| for URLs involving %% home directories of institution members: {\@makeother\~ \gdef\tilde{~}} %% The ligatures `--' and `---' for en~dash and em~dash %% don't work in our expanding mode. Now, HTML's policy %% for choosing names often prefers shorter names than %% are recommended for (La)\TeX, so here I adopt a \emph{third} %% police besides (i) and (ii) earlier; cf. \LaTeX's %% `\textemdash' and `\textendash'.---`\newcommand' %% does not accept macros whose names start with `end', so: %% |\endash|, |\emdash| ... \def \endash {–} %% \end... illegal \newcommand*{\emdash} {—} %% ``Math" spaces |\enspace|, |\quad|, |\qquad|: \renderHTMLsymbol{\enspace} {ensp} \renderHTMLsymbol{\quad} {emsp} \renewcommand* {\qquad} {\quad\quad} %% Quotes: |\lq|, |\rq| ... (TODO own subsection) \renderHTMLsymbol{\lq} {lsquo} % \newcommand* {\rsquo} {’} %% removed 2010/04/26 \renderHTMLsymbol{\rq} {rsquo} %% In order to use the right single quote for the HTML apostrophe, %% we must save other uses before. %% |\screentqtd{}| is used for screen messages, %% and |\urlapostr| is the version of the right single quote %% for URLs (TODO which? Wikipedia?): \newcommand*{\screenqtd}[1]{`#1'} \newcommand*{\urlapostr} {'} %% 2010/09/10 %% Here finally is the change of |'|: \MakeActiveDef\'{’} %% ... TODO \verb+\MakeActiveLet\'\rq+! %% And this might better be in `\BlogCodes'! would %% save `\screenqtd'! Tilde likwise!? %% ... TODO change `\catcode`\`'!? 2010/04/26 %% %% |\ldquo|, |\rdquo|, |\sbquo|, |\prime|, |\Prime| ... \declareHTMLsymbol{ldquo} \declareHTMLsymbol{rdquo} \declareHTMLsymbol{sbquo} %% 2010/07/01 \renewcommand*{\prime}{′} \declareHTMLsymbol{Prime} % \newcommand*{\Prime}{″} %% |\endqtd{}| quotes in the English style using double quote %% marks, |\enqtd{}| uses single quote marks instead, and %% |\dedqtd{}| quotes in German style: \def\endqtd#1{\ldquo#1\rdquo} %% \newcommand: "\end" \newcommand*\enqtd[1]{\lq#1\rq} %% 2010/09/08, \new... 2010/11/08 \newcommand*{\dedqtd}[1]{„#1\ldquo} %% ... TODO `\bdquo'!? %% 2010/11/08 %% %% Some more letters: |\eacute|, |\ocirc| (``r\^ole"), %% |\Omega| ... \declareHTMLsymbol{eacute} \declareHTMLsymbol{ocirc} \renderHTMLsymbol{\Omega} {Omega} %% 2010/08/24 %% |\uml{}| yields the umlaut for %% (useful in macro definitions): %% 2010/11/13 \newcommand* {\uml}[1] {uml;} %% 2010/08/24 %% |\copyright|: \renderHTMLsymbol{\copyright}{copy} %% 2010/08/24 %% Curly braces |\{| and |\}|: %% 2010/09/10 \begingroup \Delimiters\[\] \gdef\{[{] \gdef\}[}] \endgroup %% %% %% Problem: line-wise approach requires that all macro arguments %% %% are in the same line. Otherwise the lines must be enclosed %% %% in curly braces. Or split single arguments. %% 2010/04/11 %% % <- rm 2010/11/08 %% %% \pagebreak[3] %% == \TeX-related == %% 2010/08/24 %% Somebody actually using 'blog.sty' must have a need to put down %% notes about \TeX\ for her own private purposes at least---I expect. %% === Logos === %% ``Program" names might be typeset in a special font, %% I once thought, and started tagging program names with %% |\prg|. It could be `\texttt' or `\textsf' like in %% documentations of \LaTeX\ packages. However, %% sans-serif is of doubtable usefulness on web pages, %% and typewriter imitations usually look terrible on %% web pages. So I am waiting for a better idea and %% let `\prg' just remove the braces. \newcommand*{\prg}[1]{} \let\prg\@firstofone \newcommand*{\BibTeX}{\prg{BibTeX}} %% 2010/09/13 \renewcommand*{\TeX}{\prg{TeX}} \renewcommand*{\LaTeX}{\prg{LaTeX}} \newcommand*{\allTeX}{\prg{(La)TeX}}%% 2010/10/05 \newcommand*{\LuaTeX}{\prg{LuaTeX}} \newcommand*{\pdfTeX}{\prg{pdfTeX}} \newcommand*{\XeTeX}{\prg{XeTeX}} %% 2010/10/09 \newcommand*{\TeXbook}{TeXbook} %% 2010/09/13 %% %% === Else === %% With v0.4, \TeX-related \emph{links} are moved to 'texlinks.sty'. %% %% |\texcs{\}| or `\texcs\' %% (care for spacing yourself): \newcommand*{\texcs}[1]{\code{\string#1}} %% 2010/11/13 %% %% == Tables == %% These macros have proved somewhat bad. It may be better to %% re-implement tables support alltogether. %% %% There are three levels of indenting: %% $$|\indenti|, \quad %% |\indentii|,\quad \mbox{and}\quad %% |\indentiii|.$$ %% The intention for these was to get readable HTML code. Not sure ... {\catcode`\ =12%% 2010/05/19 \gdef\indenti{ }\gdef\indentii{ }\gdef\indentiii{ }} %% 2010/07/17: \newcommand*{\startTable}[1]{} \def\endTable{
    } %% 2010/07/18: \newcommand*{\starttr}{} \def\endtr{} \newcommand*{\startTd}[1]{} \def\endTd{} \newcommand*{\simplecell}{\SimpleTagSurr{td}} \newcommand*{\@frame@box}{\@frame{box}} \newcommand*{\@frame@groups}{\@frame{groups}} \newenvironment{allrulestable}[2] {\startTable{\@cellpadding{#1} \@width{#2} \@frame@box rules="all"}^^J% \indenti} {\indenti^^J\endTable} %% I first thought it would be good for readability if %% some HTML comments explain nesting or briefly describe %% the content of some column, row, or cell. %% But this is troublesome when you want to comment out %% an entire table ... \newenvironment*{TableRow}[2]{%% weniger ^^J 2010/05/18 % \indenti\ \comment{ #1 }^^J% %% <- 2010/05/23 -> % \ \comment{ #1 }^^J% %% <- 2010/07/18 -> \indenti \comment{ #1 }^^J% \indentii% }{% \indentii} \newenvironment{tablecoloredrow}[2] {\TableRow{#1}{\@bgcolor{#2}}} {\endTableRow} %% "top" 2010/05/18: \newenvironment{tablerow}[1]{\TableRow{#1}{valign="top"}} {\endTableRow} % \newcommand*{\TableCell}[2]{\indentiii#2} % \newcommand*{\TableCell}[2]{\indentiii\TagSurr{td}{#1}{#2}} %% <- 2010/07/18 -> \newcommand*{\TableCell}[2]{\indentiii\startTd{#1}#2\endTd} %% 2010/06/15: \newcommand*{\colorwidthcell}[2]{\TableCell{\@bgcolor{#1}\@width{#2}}} \newcommand*{\tablewidthcell}[1]{\TableCell{\@width{#1}}} \newcommand*{\tablecell} {\TableCell{}} \newcommand*{\tableCell} {\TableCell\@align@c} %% Idea: use closing star for environment variants!? % %% 2010/05/19: \newenvironment{bigtablecell}[1]{\BigTableCell{#1}{}} {\endBigTableCell} % {\ifx\\#1\\% %% 2010/05/30 % \indentii\ \comment{#1}^^J% % \fi % \indentiii} % {\indentii} %% !? 2010/05/23 %% Generalization 2010/06/28: % \newcommand*{\FillRow}[2]{% %% broke line 2011/01/24 % \indentiii\TagSurr{td}{\@colspan{#1} #2}{}} %% <- 2010/07/18 -> \newcommand*{\FillRow}[2]{\indentiii\startTd{\@colspan{#1} #2}\endTd} \newcommand*{\fillrow}[1]{\FillRow{#1}{}} \newcommand*{\fillrowcolor}[2]{\FillRow{#1}{\@bgcolor{#2}}} %% 2010/06/05: \newenvironment{BigTableCell}[2] {\ifx\\#1\\\indentii\ \comment{#1}^^J\fi \indentiii\startTd{#2}} {\indentii\endTd} %% TODO indent? 2010/07/18 %% %% == Misc == %% |\comment{}| produces a one-line HTML comment. %% By contrast, there is an environment %% |{commentlines}{}| %% for mult-line comments. It is convenient for ``commenting out" %% code (unless the latter contains other HTML comments ...) %% where is a \emph{comment} for explaining what is %% commented out. %% 2010/11/14 \newcommand*{\comment}[1]{} % \newcommand{\commentlines}[1]{\comment{^^J#1^^J}} %% 2010/05/07 % %% <- TODO bzw. \endlinechar=`\^^J 2010/05/09 back 2010/05/10 \newenvironment{commentlines}[1] %% 2010/05/17 {} %% \TeX's |\hrule| (rather deprecated in \LaTeX) is redefined %% to produce an HTML horizontal line: \renewcommand*{\hrule}{
    } %% Redefining |\ | to be the same as `\space' may be helpful %% for manual indenting or spacing of HTML code. %% Or better (just now remembering): I used it for making %% ``ASCII trees" with the \xmltagcode{pre} element %% (redefined `verbatim'). \let\ \space %% I couldn't find a perfect way to generate \xmltagcode{p}. %% Actually I started completing the present documentation %% when I had decided to implement automatic generation %% of \xmltagcode{p} from empty lines. % \def\par{

    } %% + empty lines !? 2010/04/26 %% <- difficult with `\stop'; 2010/09/10: %% |\endgraf| produces \xmltagcode{/p}!? \renewcommand*{\endgraf}{

    } %% 2010/04/28: %% \xmltagcode{br} can be generated either by |\newline| %% or by |\\|: \renewcommand*{\newline}{
    } \let\\\newline %% |\rightpar{}| places flush right. %% I have used this for \qtd{Last revised \dots} and for placing %% navigation marks. \newcommand*{\rightpar}{\TagSurr p\@align@r} %% 2010/06/17 %% For references, there were % \catcode`\^=\active % \def^#1{\SimpleTagSurr{sup}{#1}} %% and % \newcommand*{\src}[1]{\SimpleTagSurr{sup}{[#1]}} %% as of 2010/05/01, inspired by the \xmltagcode{ref} element %% of MediaWiki; moved to `xmlprint.tex' 2010/06/02. %% %% == The End == \endinput %% %% == VERSION HISTORY == v0.1 2010/08/20 final version for DFG v0.2 2010/11/08 final documentation version before moving some functionality to 'fifinddo' v0.3 2010/11/10 removed ^^J from \head 2010/11/11 moving stuff to fifinddo.sty; \BlogCopyFile 2010/11/12 date updated; broke too long code lines etc.; \CatCode replaced (implemented in niceverb only); \ifBlogAutoPars etc. 2010/11/13 doc: \uml useful in ...; \texcs 2010/11/14 doc: argument for {commentlines}, referring to environments with curly braces, more on \ditem 2010/11/15 TODO: usage, templates 2010/11/16 note on {verbatim} 2010/11/23 doc. corr. on \CtanPkgRef 2010/11/27 "keyword"; \CopyLine without `fd' 2010/12/03 \emhttpref -> \ithttpref 2010/12/23 `%' added to \texhaxpref 2011/01/23 more in \Provides... 2011/01/24 updated copyright; resolving `td' ("today") JUST STORED as final version before texlinks.sty v0.4 2011/01/24 moving links to texlinks.sty