\NeedsTeXFormat{LaTeX2e}[1994/12/01] %% \newcommand* etc. \ProvidesPackage{blog}[2011/08/31 v0.5 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} %% |\CLBrk| is a \emph{code line break} %% (also saving subsequent comment mark): \newcommand*{\CLBrk}{^^J} %% |\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 %% \acro{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 \let\ProvidesFile\BlogProvidesFile %% 2011/02/24 \let\protect\@empty %% 2011/03/24 #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 \acro{HTML}'s ` '! %% %% %% v0.42: %% |\ProvidesFile{.tex}[]| \ is supported %% for use with the \CtanPkgRef{morehype}{myfilist} %% package %% TODO \urlpkgfoot!? 2011/02/22 %% to get a list of source file infos. %% In generating the \acro{HTML} file, the file infos are transformed %% into an \acro{HTML} comment. Actually it is %% |\BlogProvidesFile| (for the time being, 2011/02/22): \@ifdefinable\BlogProvidesFile{% \def\BlogProvidesFile#1[#2]{% \comment{ generated from\CLBrk\CLBrk \ \ \ \ \ \ \ \ \ #1, #2,\CLBrk\CLBrk \ \ \ \ \ with blog.sty, \GenDate\ }}} %% TODO predefine? %% %% changes 2011/02/24: %% (TODO: customizable style.)---Due to the limitations %% of the approach reading the source file %% line by line, the ``optional argument" `[]' %% of `\ProvidesFile' must appear in the same line as %% the closing brace of its mandatory argument. %% The feature may require inserting %% \[`\let\ProvidesFile\BlogProvidesFile'\] %% somewhere, e.g., in `\BlogCopyFile'. %% %% \pagebreak[3] %% 2011/05/11 %% == General \acro{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 \acro{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 === %%% (General) %%% %% Inspired by the common way to use `@' for referring %% to element attributes---i.e., `@' refers to attribute %% `'---in \acro{HTML}/\acro{XML} documentation, we often use %% $$`\@{}' \qquad %% \mbox{to ``abbreviate"}\qquad `=""'$$ %% within the starting tag of an \acro{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 %% |@name| for %% 2011/04/26 %% hyper-text anchors: \declareHTMLattrib{name} %% 2010/11/06 %% Many elements have the |@type| attribute: %% 2011/08/01 \declareHTMLattrib{type} %% |@title| for tooltips: %% 2011/04/26 \let\@title\relax \declareHTMLattrib{title} %% 2011/04/26 %% |@bgcolor| is used in tables as well as %% for the appearance of the entire page: \declareHTMLattrib{bgcolor} %% %% %%% Attributes (Tables) %%% %% 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|: %% reimpl. 2011/04/24 \newcommand*{\@align@c}{\@align{center}} \newcommand*{\@align@l}{\@align{left}} \newcommand*{\@align@r}{\@align{right}} \newcommand*{\@align}[1]{align="#1"} %% |@valign@t|: \newcommand*{\@valign@t}{v\@align{top}} %% 2011/04/24 %% Some other uses of `\declareHTMLattrib' essential for %% \emph{tables:} %% emph 2011/04/24 \declareHTMLattrib{border} %% 2011/04/24 \declareHTMLattrib{class} %% 2011/04/24 \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.} %% %% === \acro{HTML}'s Special Symbols === %% |#| is needed for numerical specifications in \acro{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 \acro{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 \acro{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 \acro{HTML}'s ampersand symbol. {\catcode`\&=12 \catcode`\#=12 \gdef\AmpMark{&} \gdef\#{#}} %% ... `\CompWordMark' etc.? %% %% === Head === %% |\head| produces the first two tags that an \acro{HTML} file must start: \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!} TODO %% todo 2011/07/25 %% The definition is overridden %% to get the \acro{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}}} %% |\norobots| for privacy: %% 2011/03/16 \newcommand*{\norobots}{\robots{noarchive,nofollow,noindex}} %% |\stylesheet{}{}| uses `.css' for %% `media=""': \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', `5', `6'. %% 2011/05/12 \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. %% %% <- TODO re-order alltogether, cf. SelfHTML 2011/05/12 %% %% 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 %% |\textsf{}| TODO (see some `makehtml.tex') %% 2011/05/11 %% %% |\textcolor| is from \LaTeX's 'color' package %% that we won't load for generating \acro{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"}} %% %% == Logical Markup == %% |\code{}| marks as ``code," %% just accessing te \xmltagcode{code} element, %% while standard \LaTeX\ does not provide a `\code' command: \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 \acro{HTML} element. %% It may behave like `\textbf{}', or ... I don't know ... \newcommand*{\strong} {\SimpleTagSurr{strong}} %% %% 2011/03/09: %% |\var{}| accesses the \xmltagcode{var} element: \newcommand*{\var}{\SimpleTagSurr{var}} %% %% == 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 \acro{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} \acro{HTML} element name, %% (ii)~using a \LaTeX\ command name for accessing a somewhat %% similar \acro{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 \acro{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 \acro{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 %% \acro{HTML} label (like 'hyperref''s `\hypertarget'): \newcommand*{\hanc}[1]{\TagSurr a{\@name{#1}}} %% |\hancref{}{}{}| makes an anchor with %% \acro{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). %% %% rm. 2011/08/18: %% % 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 %% %% mod. 2011/08/18: %% general `\FileRef{}|', overlooking %% that it was the same as |\href|. % \newcommand*{\FileRef}[1]{\TagSurr a{\@href{#1}}} \newcommand*{\fileref}[1]{\href{#1\htext}} % \newcommand*{\emfileref}[2]{\fileref{#1}{\emph{#2}}} \newcommand*{\itfileref}[2]{\fileref{#1}{\textit{#2}}} %% |\fileancref{}{}{}| links to %% %% <- `text' added 2011/03/19 %% 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[blog]{texlinks}[2011/02/10] %% 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}} %% %% 2011/02/07: %% 'texlinks' sometimes uses a ``permanent alias" %% |\NormalHTTPref| of `\httpref': \@ifdefinable \NormalHTTPref {\let\NormalHTTPref\httpref} %% |\httpsref| is the analogue of `\httpref' for `https://': \newcommand*{\httpsref}[1]{% %% 2011/06/27 \TagSurr a{\@href{https://#1" target="_blank}}} %% %% %% == Symbols == %% ordering 2011/02/25 %% === Basic Preliminaries === %% |&| is made `other' for using it to call \acro{HTML}'s %% ``character entities." %% dot inside 2011/02/25 \@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; but sometimes redefining ...) %% 2011/02/26 \newcommand*{\declareHTMLsymbol}[1]{\@namedef{#1}{}} %% |\renderHTMLsymbol{}{}| \emph{redefines} %% macro to expand to `&;': \newcommand*{\renderHTMLsymbol} [2]{\renewcommand*{#1}{}} %% Redefinitions of |\&| and |\%| %% (well, `\PercentChar' is 'fifinddo''s %% add. apostroph 2011/07/22 %% version of \LaTeX's `\@percentchar'): \renderHTMLsymbol{\&}{amp} \let\%\PercentChar %% %% === Diacritics === %% changed 2011/03/04 %% For the difference between \dqtd{diacritic} and %% \dqtd{accent,} see \wikienref{Diacritic}{Wikipedia}. %% %% |\ccedil|: %%%, |\eacute|, |\ocirc| (``r\^ole") \declareHTMLsymbol{ccedil} %% %% 2011/03/04: %% \acro{HTML} entities |é|, |ô| etc. can be accessed %% by \TeX's accent commands |\'|, |\^|, |\`|, |\"|: % \declareHTMLsymbol{eacute} % \declareHTMLsymbol{ocirc} \renewcommand*{\'}[1]{acute;} \renewcommand*{\^}[1]{circ;} \renewcommand*{\`}[1]{grave;} \renewcommand*{\"}[1]{uml;} %% |\uml{}| % yields the umlaut for %% may have been overestimated: %% % (useful in macro definitions): %% 2010/11/13 % \newcommand* {\uml}[1] {uml;} %% 2010/08/24 %% %% === Greek === %% 2011/02/26 \declareHTMLsymbol{Alpha} \declareHTMLsymbol{alpha} \declareHTMLsymbol{Beta} \declareHTMLsymbol{beta} \declareHTMLsymbol{Gamma} \declareHTMLsymbol{gamma} \declareHTMLsymbol{Delta} \declareHTMLsymbol{delta} \declareHTMLsymbol{Epsilon} \declareHTMLsymbol{epsilon} \declareHTMLsymbol{Zeta} \declareHTMLsymbol{zeta} \declareHTMLsymbol{Eta} \declareHTMLsymbol{eta} \declareHTMLsymbol{Theta} \declareHTMLsymbol{theta} \declareHTMLsymbol{Iota} \declareHTMLsymbol{iota} \declareHTMLsymbol{Kappa} \declareHTMLsymbol{kappa} \declareHTMLsymbol{Lambda} \declareHTMLsymbol{lambda} \declareHTMLsymbol{My} \declareHTMLsymbol{my} \declareHTMLsymbol{Ny} \declareHTMLsymbol{ny} \declareHTMLsymbol{Xi} \declareHTMLsymbol{xi} \declareHTMLsymbol{Omikron} \declareHTMLsymbol{omikron} \declareHTMLsymbol{Pi} \declareHTMLsymbol{pi} \declareHTMLsymbol{Rho} \declareHTMLsymbol{rho} \declareHTMLsymbol{Sigma} \declareHTMLsymbol{sigma} \declareHTMLsymbol{sigmaf} \declareHTMLsymbol{Tau} \declareHTMLsymbol{tau} \declareHTMLsymbol{Upsilon} \declareHTMLsymbol{upsilon} \declareHTMLsymbol{Phi} \declareHTMLsymbol{phi} \declareHTMLsymbol{Chi} \declareHTMLsymbol{chi} \declareHTMLsymbol{Psi} \declareHTMLsymbol{psi} \declareHTMLsymbol{Omega} %% render -> declare 2011/02/26 \declareHTMLsymbol{omega} \declareHTMLsymbol{thetasym} \declareHTMLsymbol{upsih} \declareHTMLsymbol{piv} %% %% === Arrows === %% Arrows: |\gets|, |\to|, |\uparrow|, |\downarrow| ... \renderHTMLsymbol {\gets} {larr} \renderHTMLsymbol {\to} {rarr} \renderHTMLsymbol {\uparrow} {uarr} %% 2010/09/15 \renderHTMLsymbol {\downarrow}{darr} %% 2010/09/15 %% %% === Dashes === %% The ligatures `--' and `---' for en~dash and em~dash %% don't work in our expanding mode. Now, \acro{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} {—} %% %% === Spaces === %% ``Math" (not only!)\ spaces |\,|, |\enspace|, |\quad|, |\qquad|: %% %% <- 2011/04/26 \renderHTMLsymbol{\enspace}{ensp} \renderHTMLsymbol{\quad} {emsp} \renewcommand* {\qquad} {\quad\quad} %% 2011/07/22: ` ' allows line breaks, %% so we introduce |\thinsp| to access ` ', %% while |\thinspace| and |\,| use Unicode "Narrow No-Break Space" %% (`U+202F', see \meta{Wikipedia \Wikienref{Space (punctuation)}}; %% browser support?): % \renderHTMLsymbol{\thinspace}{thinsp} % \renderHTMLsymbol{\,} {thinsp} \declareHTMLsymbol{thinsp} \renderHTMLsymbol{\thinspace}{\#8239} \renderHTMLsymbol{\,} {\#8239} %% %% === Quotes, Apostrophe, Prime === %% |\lq|, |\rq| \renderHTMLsymbol{\lq} {lsquo} % \newcommand* {\rsquo} {’} %% removed 2010/04/26 \renderHTMLsymbol{\rq} {rsquo} %% In order to use the right single quote for the \acro{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 \acro{URL}s of Wikipedia articles: %% 2011/08/31 \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} \newcommand*{\deqtd}[1]{‚#1‘} %% corr. 2011/05/14 %% ... TODO `\bdquo'!? %% 2010/11/08 %% %% === Math === %% %% doc. extended 2011/05/08: %% Because \verb+<+ and \verb+>+ are used for \acro{HTML}'s %% element notation, we provide aliases |\gt|, |\lt| %% for mathematical $\lt$ and $\gt$: \declareHTMLsymbol{gt} \declareHTMLsymbol{lt} %% |\ge|, |\le|, and |\ne| for $\geq$, $\leq$, and $\neq$ resp.: \declareHTMLsymbol{ge} \declareHTMLsymbol{le} \declareHTMLsymbol{ne} %% We also provide their \TeX\ aliases %% |\geq|, |\leq|, |\neq|: %% 2011/05/11 \let\geq\ge \let\leq\le \let\neq\ne %% Angle braces |\langle| and |\rangle|: \renderHTMLsymbol{\langle}{lang} \renderHTMLsymbol{\rangle}{rang} %% The one-argument macro |\angled{}| %% allows better readable code %% TODO: %% (\textcolor{red}{should be in a more general package}): \newcommand*{\angled}[1]{\langle#1\rangle} %% Curly braces |\{| and |\}| \textcolor{red}{\dots}: \begingroup \Delimiters\[\] \gdef\{[{] \gdef\}[}] \endgroup %% \TeX's |\ast| corresponds to the ``lower" version %% of the asterisk: \renderHTMLsymbol{\ast}{lowast} %% 2011/03/29 %% Besides \TeX's |\subset| and |\subseteq|, %% we provide short versions |\sub| and |\sube| %% 2011/05/08 %% inspired by \acro{HTML}: \declareHTMLsymbol{sub} %% 2011/04/04 \let\subset\sub %% 2011/05/08 \declareHTMLsymbol{sube} %% 2011/03/29 \let\subseteq\sube %% 2011/05/08 %% \TeX\ and \acro{HTML} agree on |\cap|, |\cup|, %% 2011/05/08 %% and |\times|: \declareHTMLsymbol{cap} %% 2011/04/04 \declareHTMLsymbol{cup} %% 2011/04/04 \declareHTMLsymbol{times} %% 2011/04/04 %% We stick to \TeX's |\emptyset| %% 2011/05/08 \renderHTMLsymbol{\emptyset}{empty} %% 2011/04/14 %% We need |\minus| since math mode switching is %% not supported by 'blog': %% 2011/05/08 \declareHTMLsymbol{minus} %% 2011/03/31 %% We override \acro{HTML}'s `ˆ' to get \TeX's \cs{circ} %% (i.e., $\circ$; %% 2011/05/08: %% \textcolor{red}{but I cannot see it %% on my own pages!?}): \renderHTMLsymbol{\circ}{\#x2218} %% 2011/04/28 \renderHTMLsymbol{\cdot}{middot} %% 2011/05/07 %% |\sdot| generates `&sdot,', a variant of of `·' %% reserved for the \Wikienref{dot product} according to %% the \wikideref{Malzeichen\#Skalarprodukt}: \declareHTMLsymbol{sdot} %% 2011/05/08 %% %% === Other === %% 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 %% (should better be |\tildechar| or `\TildeChar', %% cf.~'fifinddo'): %% 2011/04/29 {\@makeother\~ \gdef\tilde{~} \gdef\tildechar{~}} %% % <- more elegant macro %% 2011/05/18 %% % \newcommand*{\StoreOtherCharAs}[2]{% %% % \edef#2{\expandafter\@gobble\string#1}} %% Horizontal ellipsis: |\dots| ... \renderHTMLsymbol {\dots} {hellip} %% %% |\copyright|: \renderHTMLsymbol{\copyright}{copy} %% |\bullet| %% 2011/03/29 \renderHTMLsymbol{\bullet}{bull} %% |\euro|: %% 2011/05/09 \declareHTMLsymbol{euro} %% \LaTeX's |\S| prints the \dqtd{\Wikienref{section sign}} %% \qtd{\S}. In \acro{HTML}, the latter accessed by `§', %% we \dqtd{redirect} `\S' to this: %% 2011/05/18 \renderHTMLsymbol{\S}{sect} %% %% %% == \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 %% Good old |\cs{}| may be preferable: \def\cs#1{\code{\BackslashChar#1}} %% 2011/03/06 %% %% == Tables == %% %% 2011/04/24: rm. remark on doubtful stability, ordered %% === Indenting === %% There are three levels of indenting: %% $$|\indenti|, \quad %% |\indentii|,\quad \mbox{and}\quad %% |\indentiii|.$$ %% The intention for these was to get readable \acro{HTML} code. Not sure ... {\catcode`\ =12%% 2010/05/19 \gdef\indenti{ }\gdef\indentii{ }\gdef\indentiii{ }} %% %% === Starting/Ending Tables === %% 2010/07/17: \newcommand*{\startTable}[1]{} \def\endTable{
    } \newcommand*{\@frame@box}{\@frame{box}} \newcommand*{\@frame@groups}{\@frame{groups}} \newenvironment{allrulestable}[2] {\startTable{\@cellpadding{#1} \@width{#2} \@frame@box rules="all"}\CLBrk \indenti} {\indenti\CLBrk\endTable} %% === Rows === %% I first thought it would be good for readability if %% some \acro{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]{%% lesser indentation 2011/04/25 \ \comment{ #1 }\CLBrk \indenti% }{% \indenti} \newenvironment{tablecoloredrow}[2] {\TableRow{#1}{\@bgcolor{#2}}} {\endTableRow} %% "top" 2010/05/18: \newenvironment{tablerow}[1]{\TableRow{#1}{\@valign@t}} {\endTableRow} %% 2010/07/18: \newcommand*{\starttr}{} \def\endtr{} %% %% === Cells === \newcommand*{\simplecell}{\SimpleTagSurr{td}} %% 2010/07/18 % \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}\CLBrk % \fi % \indentiii} % {\indentii} %% !? 2010/05/23 %% 2010/06/05: \newenvironment{BigTableCell}[2] {\ifx\\#1\\\indentii\ \comment{#1}\CLBrk\fi \indentiii\startTd{#2}} {\indentii\endTd} %% TODO indent? 2010/07/18 %% 2010/07/18: \newcommand*{\startTd}[1]{} \def\endTd{} %% %% === Filling a Row with Dummy Cells === %% 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}}} %% %% == Misc == %% |\comment{}| produces a one-line \acro{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 \acro{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 \acro{HTML} horizontal line: \renewcommand*{\hrule}{
    } %% Redefining |\ | to be the same as `\space' may be helpful %% for manual indenting or spacing of \acro{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 %% %% 2011/04/29: %% Often I use `\rightpar' with \textit{italics}, %% now there is |\rightitpar{}| for this purpose: \newcommand*{\rightitpar}[1]{\rightpar{\textit{#1}}} %% 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 v0.41 2011/02/07 \NormalHTTPref 2011/02/10 refined call of `texlinks' PART OF CTAN RELEASE r0.3 v0.5 2011/02/22 \BlogProvidesFile 2011/02/24 ... in \BlogCopyFile 2011/02/25 ordering symbols 2011/02/26 subsection Greek; note on \declareHTMLsymbol 2011/03/04 diacritics 2011/03/06 \cs 2011/03/09 \var 2011/03/16 \robots 2011/03/19 doc. \fileancref arg.s corr. 2011/03/29 \Sigma, ... 2011/03/31 \minus 2011/04/04 \times, \sub, \delta 2011/04/11 Greek completed 2011/04/14 \emptyset 2011/04/22 \deqtd 2011/04/24 doc.: folding, \stylesheet, ordered "tables"; @border, @align, @valign 2011/04/25 lesser indentation with TableRow 2011/04/26 \,, \thinspace, \@title; doc. \@name 2011/04/28 [\circ] PROBLEM still 2011/04/29 \rightitpar 2011/05/07 \cdot 2011/05/08 extended doc. on math symbols; \sdot; \ast replaces \lowast; \subset, \subseteq; \angled 2011/05/09 \euro 2011/05/11 |\geq| etc.; new section "logical markup" 2011/05/12 corr. doc. \heading 2011/05/14 right mark of \deqtd was rsquo instead of lsquo! 2011/05/18 \S and note on \StoreOtherCharAs 2011/06/27 \httpsref; doc: \acro 2011/07/22 \thinspace vs. \thinsp; 'fifinddo''s 2011/07/25 "todo" on \description 2011/08/18f.removing \FileRef, 0.42-> 0.5 2011/08/31 clarified use of \urlapostr