diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/morehype/use/blog.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/morehype/use/blog.sty')
-rw-r--r-- | macros/latex/contrib/morehype/use/blog.sty | 1609 |
1 files changed, 1609 insertions, 0 deletions
diff --git a/macros/latex/contrib/morehype/use/blog.sty b/macros/latex/contrib/morehype/use/blog.sty new file mode 100644 index 0000000000..a93f3084a8 --- /dev/null +++ b/macros/latex/contrib/morehype/use/blog.sty @@ -0,0 +1,1609 @@ +\ProvidesPackage{blog}[2013/01/21 v0.81a simple fast HTML (UL)] +%% copyright (C) 2010 2011 2012 2013 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 +%% +%% === \cs{newlet} === %% 2012/10/03 +%% |\newlet<cmd><cnd>| is also useful in surrounding files: +\newcommand*{\newlet}[2]{\@ifdefinable#1{\let#1#2}} +%% +%% == Processing == +%% === Requirement === +%% We are building on the 'fifinddo' package +%% (using `\protected@edef' for \secref{ligs}): +\RequirePackage{fifinddo}[2011/11/21] +%% +%% === Output File Names === +%% |\htmakeext| is the extension of the generated file. +%% Typically it should be `.html', as set here, +%% but my Atari emulator needs `.htm' +%% (see `texblog.fdf'): +\newcommand*{\htmakeext}{.html} +%% +%% === General Insertions === +%% |\CLBrk| is a \emph{code line break} +%% (also saving subsequent comment mark in macro definitions): +\newcommand*{\CLBrk}{^^J} +%% |\ | is turned into an alias for `\space', +%% so it inserts a blank space. It even works at line ends, +%% thanks to the choice of `\endlinechar' in \secref{catcodes}. +\let\ \space +%% %% v0.42: +%% |\ProvidesFile{<file-name>.tex}[<file-info>]| \ 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 \HTML\ file, the file infos are transformed +%% into an \HTML\ comment. Actually it is +%% |\BlogProvidesFile| (for the time being, 2011/02/22): +\@ifdefinable\BlogProvidesFile{% + \def\BlogProvidesFile#1[#2]{% + <!DOCTYPE html>\CLBrk %% TODO more!? 2012/09/06 + \comment{ generated from\CLBrk\CLBrk + \ \ \ \ \ \ \ \ \ #1, #2,\CLBrk\CLBrk + \ \ \ \ \ with blog.sty, + \isotoday\ }}} +\edef\isotoday{%% texblog 2011/11/02, here 2011/11/20 + \the\year-\two@digits{\the\month}-\two@digits{\the\day}} +%% %% changes 2011/02/24: +%% (TODO: customizable style.)---Due to the limitations +%% of the approach reading the source file +%% line by line, the ``optional argument" `[<file-info>]' +%% 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 `\BlogProcessFile'. +%% +%% === Category Codes etc. === +%% \label{sec:catcodes} +%% 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`\ % +%% <- Comment character to get space rather than `^^M'!%%% 2011/11/08 +%% ---The tilde |~| is active as in Plain~TeX too, it is so natural to +%% use it for abbreviating \HTML's ` '! %% moved up 2011/11/08 +% \catcode`\~\active + \MakeActiveDef\~{ }%% for \FDpseudoTilde 2012/01/07 +%% \qtd{&'} for \HTML\ convenience (cf. \secref{quotes}): + \MakeActiveLet\'\rq %% actcodes 2012/08/28 + \BasicNormalCatCodes} +% \MakeOther\< \MakeOther\> %% rm. 2011/11/20 +%% +%% === The Processing Loop === +%% \[|\BlogProcessFile[<changes>]{<source-file>}|\] +%% %% <- display 2011/11/06 +%% ``copies" the \TeX\ source file <source-file> +%% into the file specified by `\ResultFile'. +\newcommand*{\BlogProcessFile}[2][]{% %% 2011/11/05 + \ProcessFileWith[\BlogCodes + \let\ProvidesFile\BlogProvidesFile %% 2011/02/24 + \let\protect\@empty %% 2011/03/24 + \let\@typeset@protect\@empty %% 2012/03/17 + #1]{#2}{% + \IfFDinputEmpty + {\IfFDpreviousInputEmpty + \relax + {\WriteResult{\ifBlogAutoPars<p>\fi}}}% + \BlogProcessLine %% 2011/11/05 + }% +} +%% 'fifinddo' v0.5 allows the following %% 2011/11/20 +%% \[|\BlogProcessFinalFile[<changes>]{<source-file>}|\] +%% working just like `\BlogProcessFile' except that the final +%% `\CloseResultFile' is issued automatically, no more need +%% having it in the driver file. +\newcommand*{\BlogProcessFinalFile}{% + \FinalInputFiletrue\BlogProcessFile} +%% TODO: %% 2011/11/20 +%% optionally include `.css' code with \xmltagcode{style}. +%% === \emph{Executing} Source File Code Optionally === +%% For v0.7, %% 2011/11/05 +%% `\BlogCopyFile' is renamed `\BlogProcessFile'; and in its code, +%% `\CopyLine' is replaced by `\BlogProcessLine'. The purpose +%% of this is supporting 'blogexec.sty' that allows intercepting +%% certain commands in the line. We provide initial versions of +%% 'blogexec''s switching commands that allow invoking 'blogexec' +%% ``on the fly": +\newcommand*{\ProvideBlogExec}{\RequirePackage{blogexec}} +%% \CtanPkgRef{dowith}{dowith.sty} is used in the %% 2012/01/06 +%% present package to reduce package code and documentation space: +\RequirePackage{dowith} +\setdo{\providecommand*#1{\ProvideBlogExec#1}} +\DoDoWithAllOf{\BlogInterceptExecute \BlogInterceptEnvironments + \BlogInterceptExtra \BlogInterceptHash } +%% %% <- Hash 2011/11/08 +%% |\BlogCopyLines| switches to the ``copy only" +%% (``compressing" empty lines) functionality of the original +%% `\BlogCopyFile': +\newcommand*{\BlogCopyLines}{% +% \let\BlogProcessLine\CopyLine} + \def\BlogProcessLine{% %% 2011/11/21, corr. 2012/03/14: + \WriteResult{\ProcessInputWith\BlogOutputJob}}} +%% <- This is a preliminary support for ``ligatures"---see +%% \secref{ligs}. %%% --, not working inside braces. +%% |\NoBlogLigs| sets the default to mere copying: +\newcommand*{\NoBlogLigs}{\def\BlogOutputJob{LEAVE}} +\NoBlogLigs +%% TODO more from `texblog.fdf' here, problems with `writings.fdf', +%% see its `makehtml.tex' +%% %% 2011/11/06: +%% % ... and this will be the setting with pure 'blog.sty': +%% +%% `\BlogCopyLines' %% 2011/11/21 +%% will be the setting with pure 'blog.sty': +\BlogCopyLines +%% OK, let's not remove |\BlogCopyFile| altogether, rebirth: +\newcommand*{\BlogCopyFile}{\BlogCopyLines\BlogProcessFile} +%% +%% === ``Ligatures", Package Options === +%% \label{sec:ligs} +%% With v0.7, we introduce a preliminary method to use the +%% ``ligatures" `--' and `---' with pure expansion. +%% At this occasion, we also can support the notation +%% \code{\dots} for `\dots', as well as arrows +%% (as in `mdoccorr.cfg'). Note that this is somewhat +%% \strong{dangerous}, especially the source must not +%% contain ``explicit" \HTML\ comment, comments must use +%% 'blog.sty''s `\comment' or the `{commentlines}' +%% environment. Therefore these ``ligatures" must be activated +%% explicitly by |\UseBlogLigs|: +\newcommand*{\UseBlogLigs}{\def\BlogOutputJob{BlogLIGs}} +%% In order to work inside braces, the source file better should +%% be preprocessed in ``plain text mode." +%% (TODO: Use `\ifBlogLigs', and in a group use +%% `\ResultFile' for an intermediate `\htmljob.lig'. +%% And TODO: Use `\let\BlogOutputJob'.) +%% On the other hand, the present approach allows switching +%% while processing with `\EXECUTE'! Also, intercepted commands +%% could apply the replacements on their arguments---using +%% |\ParseLigs{<arg>}|: %% 2011/11/27 +\newcommand*{\ParseLigs}[1]{\ProcessStringWith{#1}{BlogLIGs}} +%% (`\ProcessStringWith' is from 'fifinddo'.)---The package +%% 'blogligs.sty' described in \secref{moreligs} does these +%% things in a more powerful way. You can load it by calling +%% 'blog.sty''s package option |[ligs]| (v0.8): +\DeclareOption{ligs}{\AtEndOfPackage{\RequirePackage{blogligs}}} +%% +%% The replacement chain follows (TODO move to `.cfg'). +%% As opposed to the file `mdoccorr.cfg' for 'makedoc.sty', +%% we are dealing with ``normal \TeX" code +%% (regarding category codes, 'fifinddo.sty' +%% as of 2011/11/21 is needed for `\protect'). +%% Moreover, space tokens after patterns are already there +%% and need not be inserted after control sequences. +\FDpseudoTilde +\StartPrependingChain +\PrependExpandableAllReplacer{blog...}{...}{\protect\dots} +\PrependExpandableAllReplacer{blog--}{--}{\protect\endash} +\PrependExpandableAllReplacer{blog---}{---}{\protect\emdash} +%% <- Cf. thin surrounding spaces with +%% `\enpardash' ('texblog', maybe \meta{hair space} U+200A +%% instead of thin space), difficult at code line beginnings +%% or endings and when a paragraph starts with an emdash. +%% I.e., perhaps better don't use it if you want to have +%% such spaces.---\qtd{`---'} must be replaced before \qtd{`--'}! +\PrependExpandableAllReplacer{blog->}{->}{\protect\to} +\PrependExpandableAllReplacer{blog<-}{<-}{\protect\gets} +%% You also could set `\BlogOutputJob' to a later part of the chain, +%% or more globally change the following: +\CopyFDconditionFromTo{blog<-}{BlogLIGs} +%% % TODO: Seems to slow down processing by a major part of a second. +%% % Reduce replacements? Maybe do all of this within source file!? +%% The package 'markblog.sty' described in \secref{mark} extends this +%% to some markup resembling \Wikiref{wiki} editing. +%% This package may be loaded by 'blog.sty''s package option |[mark]| +%% (v0.8): +\DeclareOption{mark}{\AtEndOfPackage{\RequirePackage{markblog}}} +%% +%% === \xmltagcode{p} from Empty Line, Package Option === +%% \label{sec:autopars} +%% As in \TeX\ an empty line starts a new paragraph, +%% we might ``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, this sometimes has unwanted effects +%% (comment lines TODO), %% 2011/11/20 +%% 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} +%% `\BlogAutoPars' is issued by package option %% 2011/11/20 +%% |[autopars]|: +\DeclareOption{autopars}{\BlogAutoPars} +\ProcessOptions +%% See \secref{p-br} for other ways of breaking paragraphs. +%% +%% == General \HTML\ Matters == +%% The following stuff is required for any web page +%% (or hardly evitable). +%% === General Tagging === +%% %% $$ -> \[ ... 2011/10/10 el-name -> elt-name 2012/09/14: +%% \[|\TagSurr{<elt-name>}{<attr>}{<content>}|\] +%% (I hoped this way code would be more readable +%% than with `\TagSurround' ...) +%% and \[|\SimpleTagSurr{<elt-name>}{<content>}|\] +%% are used to avoid repeating element names <elt-name> 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</#1>} +\newlet\STS\SimpleTagSurr %% 2010/05/23 +%% %% 2012/09/08: +%% With the space in `\declareHTMLattrib' as of 2012/08/28, +%% we remove the space between #1 and #2. +%% (Doing this by an option may be better TODO; +%% any separate attribute definitions must take care of this.) +% \newcommand*{\TagSurr}[3]{<#1#2>#3</#1>} +%% ... undone 2012/11/16, bad with ``direct" use of #2 +%% (with attributes not declared): +\newcommand*{\TagSurr}[3]{<#1 #2>#3</#1>} +%% +%% === Attributes === %%% (General) %%% +%% Inspired by the common way to use `@' for referring +%% to element attributes---i.e., `@<attr>' refers to attribute +%% `<attr>'---in \HTML/\acro{XML} documentation, we often use +%% \[`\@<attr>{<value>}' \qquad +%% \mbox{to ``abbreviate"}\qquad `<attr>="<value>"'\] +%% 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{<attr>}|, even with a check +%% whether `\@<attr>' has been defined before: +\newcommand*{\declareHTMLattrib}[1]{% + \def\reserved@a{@#1}% + \@ifundefined\reserved@a %% \res... 2012/09/06 + {\@namedef{@#1}##1{ #1="##1"}}%% space 2012/08/28 + \@notdefinable} +%% So after `\declareHTMLattrib{<attr>}', `\@<attr>' is a +%% \TeX\ macro expecting one parameter for the specification. +%% +%% % |\declareHTMLattribs{{<attr>}<list>}| essentially issues +%% % \[`\declareHTMLattrib{<attr>}\declareHTMLattribs{<list>}'\] +%% % while `\declareHTMLattribs{}' essentially does nothing---great, +%% % this is an explanation by recursion! +%% % % \newcommand*{\declareHTMLattribs}{\DoWithAllOf\declareHTMLattrib} +%% A few frequent attributes are declared this way here. +%% %% 2011/09/27: +%% |@class|, |@id|, |@style|, |@title|, |@lang|, and |@dir| +%% are the ones named on +%% \wikienref{HTML\#Attributes}{\meta{Wikipedia}}: +\let\@class\relax %% for tab/arr in latex.ltx +\let\@title\relax %% for \title in latex.ltx, %% 2011/04/26 +\DoWithAllOf\declareHTMLattrib{{class}{id}{style}{title}{lang}{dir}} +%% |@type| is quite frequent too: %% doc. 2011/09/27 +\declareHTMLattrib{type} +%% |@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 +%% |@content| appears with `\MetaTag' below: %% 2011/11/05 +\declareHTMLattrib{content} +%% |@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 +%% `\@<ASCII-chars>' 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 +%% \pagebreak[3] %% 2012/09/08 +%% 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"} +\declareHTMLattrib{align} %% 2012/09/08 +%% |@valign@t|: +% \newcommand*{\@valign@t}{v\@align{top}} %% 2011/04/24 +\newcommand*{\@valign@t}{ valign="top"} %% 2012/09/08 +%% Some other uses of `\declareHTMLattrib' essential for +%% \emph{tables:} %% emph 2011/04/24 +\declareHTMLattrib{border} %% 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.} +%% +%% === Hash Mark === +%% |#| is needed for numerical specifications in \HTML, +%% especially colours 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) %% (...) 2011/11/08 +%% in order to refer to their \HTML\ meaning.%%%---I wonder +%% %% <- rm. 2011/11/08 -> +%% % 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. +{ \MakeOther\# \gdef\#{#} %% \M... 2011/11/08 +% \catcode`\&=12 \gdef\AmpMark{&} %% rm. 2011/11/08 +} +%% ... `\CompWordMark' etc.? +%% +%% === ``Escaping" \HTML\ Code for ``Verbatim" === +%% \label{sec:html-verb} %% 2011/11/23 +%% |\xmltagcode{<chars>}| yields \qtd{\xmltagcode{<chars>}}: +\newcommand*{\xmltagcode}[1]{\code{\lt#1\gt}} +%% %% elements 2012/09/14: +%% |\xmleltcode{<name>}{<content>}| displays the code for an entire +%% <name> element containing <content> without attributes: +\newcommand*{\xmleltcode}[2]{\code{\lt#1\gt#2\lt/#1\gt}} +%% |\xmleltcode{<name>}{<attrs>}{<content>}| displays the code for an entire +%% <name> element \emph{with} attribute text \qtd{<attrs>} +%% containing <content>: +\newcommand*{\xmleltattrcode}[3]{\code{\lt#1 #2\gt#3\lt/#1\gt}} +%% |\xmlentitycode{<name>}| yields the code \qtd{`&&<name>;'} for an +%% entity with name <name>: +\newcommand*{\xmlentitycode}[1]{\code{\}} +%% +%% === Head === +%% |\head| produces the first two tags that an \HTML\ file must start: +\newcommand*{\head}{<html><head>} %% ^^J rm 2010/10/10 +%% |\MetaTag{<inside>}| creates a \xmltagcode{meta} tag: +\newcommand*{\MetaTag}[1]{\indenti<meta #1>} +%% |\charset{<code-page>}| %% Content-T -> content-t 2012/09/06 +\newcommand*{\charset}[1]{% + \MetaTag{ http-equiv="content-type"\@content{text/html; #1}}} + %% <- space 2012/09/08 +%% \pagebreak[3] %% 2012/09/07 +%% |\metanamecontent{<name>}{<content>}| obviously: %% 2012/09/06 +\newcommand*{\metanamecontent}[2]{% + \MetaTag{\@name{#1}\@content{#2}}} +%% %% 2012/09/07: +%% |\author{<name>}| and |\date{<date>}| set according metadata, +%% somewhat opposing \LaTeX\ (TODO!?): +\renewcommand*{\author}{\metanamecontent{author}} +\renewcommand*{\date}{\metanamecontent{date}} +%% The name of |\metadescription{<text>}| allows using +%% `\begin{description}' (cf. secref{env}): +\newcommand*{\metadescription}{\metanamecontent{description}} +%% |\keywords{<text>}|: +\newcommand*{\keywords}{\metanamecontent{keywords}} +%% |\robots{<instructions>}|: %% using above 2012/09/06 +\newcommand*{\robots}{\metanamecontent{robots}} + %% #2 juergenf: index, follow, noarchive +%% |\norobots| for privacy %% 2011/03/16 +%% (cf. \urlhttpref{noarchive.net/meta} %% 2012/09/07 +%% and \wikienref{Robots meta tag\#The_robots_attribute}{% +%% \meta{Wikipedia}}: +\newcommand*{\norobots}{\robots{noarchive,nofollow,noindex}} +%% |\metanamelangcontent{<name>}{<lang>}{<content>}|,\\ %% 2012/09/06 +%% in addition to the above, uses language code <lang>: %% 2012/09/07 +\newcommand*{\metanamelangcontent}[3]{% + \MetaTag{\@name{#1}\@lang{#2}\@content{#3}}} +%% So there can be language-dependent descriptions and keywords:\\ +%% |\langdescription{<text>}| and |\langkeywords{<>}| +\newcommand*{\langdescription}{\metanamelangcontent{description}} +\newcommand*{\langkeywords} {\metanamelangcontent{keywords}} +%% |\stylesheet{<media>}{<css>}| uses <css>`.css' for +%% `media="<media>"': +\newcommand*{\stylesheet}[2]{% + \space\space %% 2010/09/10 + <link rel="stylesheet" media="#1"% + \@type{text/css}% %% \@type 2011/10/05 + \@href{#2.css}>} +%% %% 2011/10/05: +%% Alternatively, style declarations may occur in the +%% \xmltagcode{style} element. It can be accessed by the +%% |{style}| environment (cf. \secref{env}): +\newenvironment*{style}[1] + {<style\@type{text/css} media="#1">} + {</style>} +%% With |\title{<text>}|, <text> heads %% grammar? TODO 2010/04/08 +%% the browser window: +%% % \renewcommand*{\title}[1]{\space\space<title>#1</title>} +%% %% <- 2011/12/12 -> +\renewcommand*{\title}{\space\space\SimpleTagSurr{title}} +%% +%% === Body === +%% |\body| separates the `head' element from the `body' element +%% of the page. +\newcommand*{\body}{</head><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}{</body></html>} +%% +%% === Comments === +%% |\comment{<comment>}| produces a one-line \HTML\ comment. +%% By contrast, there is an environment +%% |{commentlines}{<comment>}| +%% for multi-line comments. %% was mult-l... 2011/09/08 +%% It is convenient for ``commenting out" +%% code (unless the latter contains other \HTML\ comments ...) +%% where <comment> is a \emph{comment} for explaining what is +%% commented out. %% 2010/11/14 +\newcommand*{\comment}[1]{<!--#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 + {<!--#1} + {-->} +%% === \CSS === %% 2012/07/30 spanstyle -> stylespan 2012/10/28 +%% |\stylespan{<css-style>}{<text>}| applies the \CSS\ styling +%% <css-style> to <text>: +\newcommand*{\stylespan}[1]{\TagSurr{span}{\@style{#1}}} +%% Not sure about \xmltagcode{div} yet ... TODO +%% +%% == Paragraphs and Line Breaks == +%% \label{sec:p-br} +%% 2010/04/28: +%% \xmltagcode{br} for manual line breaking +%% can be generated either by |\newline| or by |\\|: +\renewcommand*{\newline}{<br>} +\let\\\newline +%% Automatical insertion of \xmltagcode{p} tags +%% for starting new paragraphs according to +%% \secref{autopars} has been difficult, +%% especially comment lines so far insert unwanted +%% paragraph breaks (TODO 2011/11/20). +%% So here are some ways to use \LaTeX/ Plain \TeX\ +%% commands---or ...: %% 2011/11/23 +% \def\par{<p>} %% + empty lines !? 2010/04/26 +%% <- difficult with `\stop'; 2010/09/10: +%% |\endgraf| produces \xmltagcode{p}---TODO!? %% todo 2011/11/23 +\renewcommand*{\endgraf}{<p>} %% was </p> 2012/11/19 +%% %% 2011/11/23: +%% However, I rather have decided for inserting a literal +%% \qtd{\xmltagcode{p}} using an editor (keyboard) shortcut. +%% +%% |\rightpar{<text>}| places <text> 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{<text>}| for this purpose: +\newcommand*{\rightitpar}[1]{\rightpar{\textit{#1}}} +%% +%% == Physical Markup (Inline) == %% mod. 2012/09/13 +%% \label{sec:phys} +%% We ``re-use" some \LaTeX\ commands for specifying font attributes, +%% rather than (re)defining macros `\i', `\b', `\tt', ... +%% \[|\textit{<text>}| \qquad +%% \mbox{just expands to}\qquad +%% \xmltagcode{i}<text>\xmltagcode{/i}\] +\renewcommand*{\textit}{\SimpleTagSurr i} +%% etc. for |\textbf|, |\texttt| ...: +\renewcommand*{\textbf}{\SimpleTagSurr b} +\renewcommand*{\texttt}{\SimpleTagSurr{tt}} %% 2010/06/07 +%% |\textsf{<text>}| chooses some sans-serif: %% 2011/10/20 2012/07/30 +\renewcommand*{\textsf}{\stylespan{font-family:sans-serif}} +%% |\textup{<text>}| may undo surrounding slanting or ...: %% 2012/08/01 +\renewcommand*\textup{\stylespan{font-style:normal}} +%% |\textcolor{<color>}{<text>}| %% args 2012/08/01 +%% 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 coloured text. %% (2010/05/15): +%% \xmltagcode{font} is deprecated, use %% 2011/10/20 +%% \xmltagcode{span} instead: %% \span... 2012/07/30: +\newcommand*{\textcolor}[1]{\stylespan{color:#1}} +%% %% moves here from "Misc." 2012/09/13: +%% \TeX/\LaTeX's |\underbar{<text>}| is redirected to the \xmltagcode{u} +%% element: %% 2012/06/07 +\renewcommand*{\underbar}{\SimpleTagSurr u} +%% +%% == Logical Markup == +%% %% \heading moves here from former section 2012/09/13: +%% |\heading{<level>}{<text>}| prints <text> with size dependent +%% on <level>. 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 +%% +%% |\code{<text>}| marks <text> 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{<text>}| is \LaTeX's command again, but somewhat abused, +%% expanding to \lq\xmltagcode{em}<text>\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{<text>}| again just calls an \HTML\ element. +%% It may behave like `\textbf{<text>}', or ... I don't know ... +\newcommand*{\strong}{\SimpleTagSurr{strong}} +%% %% 2011/03/09: +%% |\var{<symbol(s)>}| accesses the \xmltagcode{var} element: +\newcommand*{\var}{\SimpleTagSurr{var}} +%% %% 2011/09/21, 2012/01/06: +%% For tagging acronyms, +%% \HTML\ offers the \xmltagcode{acronym} element, +%% and the \httpref{ctan.org/pkg/tugboat}{\acro{TUG}boat macros} +%% provide |\acro{<LETTERS>}|. I have used the latter for some +%% time in my package documentations anyway. For v0.7, %% 2012/01/06 +%% I add the latter here as an alias for |\acronym{<LETTERS>}| +%% (supporting both naming policies mentioned in \secref{name-policy}): +\newcommand*{\acronym}{\SimpleTagSurr{acronym}} +\newlet\acro\acronym +%% %% 2012/02/04: +%% |\newacronym{<LETTERS>}| saves you from doubling the <LETTERS> +%% when you want to create the shorthand macro `\<LETTERS>': +\newcommand*{\newacronym}[1]{% + \expandafter\newcommand\expandafter*\csname#1\endcsname{% + \acronym{#1}}} +%% However, \xmltagcode{acronym} is +%% \wikienref{HTML elements#Phrase_elements}{deprecated}. +%% You may use |\abbr{<LETTERS>}| and |\newabbr{<LETTERS>}| instead: +\newcommand*{\abbr}{\SimpleTagSurr{abbr}} %% 2012/09/13 +\newcommand*{\newabbr}[1]{% + \expandafter\newcommand\expandafter*\csname#1\endcsname{% + \abbr{#1}}} +%% +%% == Environments == +%% \label{sec:env} +%% We reduce \LaTeX's |\begin| and |\end| to their most primitive +%% core. +%% \begin{description} +%% \cmdboxitem|\begin{<command>}| just executes the macro `\<command>', +%% and +%% \cmdboxitem|\end{<command>}| just executes the macro `\end<command>'. +%% \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} +%% ... moving |{english}| to `xmlprint.cfg' +%% 2010/05/22 ...%% doc 2010/11/06 +%% +%% As formerly with +%% \hyperref[sec:phys]{physical markup}, %% \hyperref 2012/01/06 +%% we have \emph{two} policies for +%% \label{sec:name-policy} %% 2012/01/06 2012/11/28 +%% \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. +%% [\,2011/10/05: so what? TODO\,] +%% +%% New 2011/10/05: +%% With |\useHTMLelement{<ltx-env>}{<html-el>}|, +%% you can access the \xmltagcode{<html-el>} element +%% by the `<ltx-env>' environment. +%% The ``starred" form is for ``list" environments +%% where I observed around 2011/10/01 that certain links +%% (with Mozilla Firefox) need \xmltagcode{/li}: +\newcommand*{\useHTMLelement}{% + \@ifstar{\@useHTMLelement[</li>]}{\@useHTMLelement}} +\newcommand*{\@useHTMLelement}[3][]{% + \@namedef{#2}{<#3>}% + \@namedef{end#2}{#1\CLBrk</#3>}} %% \CLBrk 2012/04/03 +%% Applications: +%% +%% \acro{CARE:} |{small}| is an environment here, +%% it is not in \LaTeX: +\useHTMLelement{small}{small} +%% |{center}|: %% TODO von 2010/07/18, weiter oben +% \renewenvironment*{center}{<p align="center">}{</p>} +% \renewenvironment*{center}{<p \@align@c>}{</p>} +\useHTMLelement{center}{center} +%% The next definitions for |{enumerate}|, |{itemize}|, +%% `{verbatim}' follow policy~(ii): +\useHTMLelement*{enumerate}{ol} +\useHTMLelement*{itemize} {ul} +%% |\begin{enumtype}{<type>}| starts an enumeration +%% environment with enumeration type <type> +%% which can be one out of `1', `a', `A', `i', `I' +%% (somewhat resembling the functionality of the +%% \ctanpkgref{enumerate} package): +\newenvironment{enumtype}[1]{<ol \@type{#1}}{</ol>} +%% %% 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}: +\useHTMLelement{verbatim} {pre} +%% |{quote}|: +\useHTMLelement{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'. +%% 2011/10/04 including \xmltagcode{</li>}, +%% repairs more links in \acro{DANTE} talk +%% (missing again 2011/10/11!?): +\renewcommand*{\item}{% + \indenti</li>\CLBrk %% 2011/10/11 + \indenti<li>} +%% \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{<term>}| +%% having a \emph{mandatory} argument +%% (TODO star?). %% 2011/10/05 +\useHTMLelement{description}{dl} +\newcommand*{\ditem}[1]{\indenti<dt>\strong{#1}<dd>} +%% +%% == Links == +%% === Basic Link Macros === +%% %% doc. fixes + hyperref 2011/10/16: +%% |\hanc{<name>}{<text>}| makes <text> an anchor with +%% \HTML\ label <name> like \ctanpkgref{hyperref}'s +%% |\hypertarget{<name>}{<text>}| +%% (that we actually provide as well, +%% towards printing from the same source): +\newcommand*{\hanc}[1]{\TagSurr a{\@name{#1}}} +\newlet\hypertarget\hanc +%% |\hancref{<name>}{<target>}{<text>}| makes <text> an anchor with +%% \HTML\ label <name> and at the same time a link to <target>: +\newcommand*{\hancref}[2]{\TagSurr a{\@name{#1} \@href{#2}}} +%% |\href{<name>}{<text>}| makes <text> a link to <name> +%% (as with 'hyperref'): +\newcommand*{\href}[1]{\TagSurr a{\@href{#1}}} +%% +%% === Special cases of Basic Link Macros === +%% |\autanc{<text>}| creates an anchor where <text> is +%% the text and the internal label at the same time: +\newcommand*{\autanc}[1]{\hanc{#1}{#1}} %% 2010/07/04 +%% |\ancref{<name>}{<text>}| makes <text> a link to +%% an anchor <name> on the same web page. +%% This is especially useful for a ``table of contents"---a +%% list of links to sections of the page. +%% It is just like 'hyperref''s |\hyperlink{<name>}{<text>}|: +\newcommand*{\ancref}[1]{\href{\##1}} +\newlet\hyperlink\ancref +%% |\autref{<text>}| makes <text> a link to an anchor +%% named <text> 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., <text> 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{<filename-base>}|.\] 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{<filename>}|', overlooking +%% that it was the same as |\href|. +% \newcommand*{\FileRef}[1]{\TagSurr a{\@href{#1}}} +\newcommand*{\htext}{.htm} %% 2011/10/05 +\newcommand*{\fileref}[1]{\href{#1\htext}} +% \newcommand*{\emfileref}[2]{\fileref{#1}{\emph{#2}}} +\newcommand*{\itfileref}[2]{\fileref{#1}{\textit{#2}}} +%% |\fileancref{<file>}{<anchor>}{<text>}| links to +%% %% <- `text' added 2011/03/19 +%% anchor <anchor> on web page <file>: +\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. +%% This may change (as with 'blogdot.sty', 2011/10/12, +%% or more generally with local non-\HTML\ files), +%% so let us have a backbone +%% |\hnewref{<prot>}{<host-path[#frag]>}{<text>}| +%% that %% 2011/10/21 +%% makes <text> a link to <prot><host-path[#frag]>: +\newcommand*{\hnewref}[2]{% + \TagSurr a{\@href{#1#2" target="_blank}}} +%% So \[|\httpref{<host-path[#frag]>}{<text>}|\] +%% makes <text> a link to \urlfmt{http://}<host-path[#frag]>: +\newcommand*{\httpref}{\hnewref{http://}} +%% With v0.4, macros based on `\httpref' are moved to 'texlinks.sty': +\RequirePackage[blog]{texlinks}[2011/02/10] +%% Former |\urlref| appears as |\urlhttpref| there ... +\newlet\urlref\urlhttpref +%% ... and `\ctanref' has changed its meaning there as of 2011/10/21. +%% %% 2011/02/07: +%% 'texlinks' sometimes uses a ``permanent alias" +%% |\NormalHTTPref| of `\httpref': +\newlet\NormalHTTPref\httpref +%% |\httpsref| is the analogue of `\httpref' for `https://': +\newcommand*{\httpsref}{\hnewref{https://}} +%% +%% % \pagebreak %% 2012/07/30 rm. 2012/09/13 +%% == Characters/Symbols == %% `Symbols' until 2011/09/25 +%% === Basic Preliminaries === +%% |&| is made `other' for using it to call \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{<name>}| defines a macro `\<name>' +%% expanding to `&<name>;'. Checking for prior definedness +%% hasn't been implemented yet. +%% (TODO; but sometimes redefining ...) %% 2011/02/26 +\newcommand*{\declareHTMLsymbol}[1]{\@namedef{#1}{}} +%% %% TODO replace \@namedef with \defcsname +%% |\declareHTMLsymbols{<name>}{<list>}| essentially issues %% corr. br. 2012/08/02 +%% \[`\declareHTMLsymbol{<attr>}\declareHTMLsymbols{<list>}'\] +%% while `\declareHTMLsymbols{}' essentially does nothing---great, +%% this is an explanation by recursion! +\newcommand*{\declareHTMLsymbols}{\DoWithAllOf\declareHTMLsymbol} +%% |\renderHTMLsymbol{<macro>}{<name>}| \emph{redefines} +%% macro <macro> to expand to `&<name>;': +\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}{\meta{Wikipedia.}} +%% +%% %% replacing \ccedil 2011/11/23: +%% %%|\ccedil|: %%%, |\eacute|, |\ocirc| (``r\^ole") +%% % \declareHTMLsymbol{ccedil} +%% %% 2011/03/04, added example results 2011/11/24: +%% \HTML\ entities |é| (\'e), +%% |ç| (\c{c}), %% 2011/11/23 +%% |ô| (\^o) etc. can be accessed +%% by \TeX's accent commands |\'|, |\c|, |\^|, |\`|, |\"|: +% \declareHTMLsymbol{eacute} +% \declareHTMLsymbol{ocirc} +\renewcommand*{\'}[1]{acute;} +\renewcommand*{\c}[1]{cedil;} +\renewcommand*{\^}[1]{circ;} +\renewcommand*{\`}[1]{grave;} +\renewcommand*{\"}[1]{uml;} +%% %% 2012/05/13: +%% ... former |\uml{<char>}| is obsolete, use |\"<char>| +%% (or `\"<char>') instead. +%% % may have been overestimated: +%% % (useful in macro definitions): %% 2010/11/13 +%% % \newcommand* {\uml}[1] {uml;} %% 2010/08/24 +%% +%% %% 2013/01/01: +%% |\v{<char>}| just works with $<char>=`s'$ and $<char>=`S'$ +%% for \v{s} and \v{S}: +\renewcommand*{\v}[1]{#1caron;} +%% +%% === Ligatures and the Like === %% 2013/01/01 +%% |\lig{<char1><char2>}| forms a ligature from <char1> and <char2>: +\newcommand*{\lig}[1]{lig;} +%% With v0.81, we use this to reimplement +%% |\ss| from Plain~\TeX\ and \LaTeX\ for the +%% putative %% 2013/01/01 +%% ``s-z ligature", the German ``\Wikienref{sharp s}" +%% (``\ss"): %% 2013/01/01 +% \renderHTMLsymbol{\ss}{szlig} +\renewcommand*{\ss}{\lig{sz}} +%% |\AE|, |\ae|, |\OE|, |\oe| (``\AE", ``\ae", ``\OE", ``\oe") +%% are reimplemented likewise: +\renewcommand*{\AE}{\lig{AE}} +\renewcommand*{\ae}{\lig{ae}} +\renewcommand*{\OE}{\lig{OE}} +\renewcommand*{\oe}{\lig{oe}} +%% +%% === Greek === %% 2011/02/26 +\declareHTMLsymbols{{Alpha}{alpha} %% 2012/01/06 + {Beta}{beta}{Gamma}{gamma}{Delta}{delta}{Epsilon}{epsilon} + {Zeta}{zeta}{Eta}{eta}{Theta}{theta}{Iota}{iota}{Kappa}{kappa} + {Lambda}{lambda}{My}{my}{Ny}{ny}{Xi}{xi}{Omikron}{omikron} + {Pi}{pi}{Rho}{rho}{Sigma}{sigma}{sigmaf}{Tau}{tau} + {Upsilon}{upsilon}{Phi}{phi}{Chi}{chi}{Psi}{psi} + {Omega}{omega} %% render -> declare 2011/02/26 + {thetasym}{upsih}{piv} } +%% +%% === Arrows === +%% ---somewhat completed 2012/07/25. +%% +%% |\downarrow|, |\leftarrow|, |\leftrightarrow|, |\rightarrow|, |\uparrow|: +\renderHTMLsymbol {\downarrow} {darr} %% 2010/09/15 +\renderHTMLsymbol {\leftarrow} {larr} +\renderHTMLsymbol {\leftrightarrow}{harr} +\renderHTMLsymbol {\rightarrow} {rarr} +\renderHTMLsymbol {\uparrow} {uarr} %% 2010/09/15 +%% Aliases |\gets| and |\to| were implemented first as stand-alones, +%% now are treated by `\let': +\let \gets \leftarrow +\let \to \rightarrow +%% |\Downarrow|, |\Leftarrow|, |\Leftrightarrow|, +%% |\Rightarrow|, |\Uparrow| (i.e., double variants): +\renderHTMLsymbol {\Downarrow} {dArr} +\renderHTMLsymbol {\Leftarrow} {lArr} +\renderHTMLsymbol {\Leftrightarrow}{hArr} +\renderHTMLsymbol {\Rightarrow} {rArr} +\renderHTMLsymbol {\Uparrow} {uArr} +%% |\crarrow| accesses \HTML's `crarr' entity (symbol for return key), +%% named ``downwards arrow with tip leftwards" in Unicode (U+21b2): +\newcommand*{\crarrow}{↵} %% 2012/09/13 +%% +%% === Dashes === +%% 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} +%% policy %% was "police" 2012/07/25 +%% 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} +%% |\figurespace| %% 2011/09/25 +%% (U+2007, cf.~\wikienref{Figure space}{\meta{Wikipedia}}): +\newcommand*{\figurespace}{&\#8199;} +%% +%% === Quotes, Apostrophe === +%% \label{sec:quotes} +%% |\lq|, |\rq| +\renderHTMLsymbol{\lq} {lsquo} +\renderHTMLsymbol{\rq} {rsquo} +%% In order to use the right single quote for the \HTML\ apostrophe, +%% we must save other uses before. +%% %% rm. \screenqtd 2011/11/08: +%% % |\screentqtd{<text>}| 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'} %% rm. 2011/11/08 +\newcommand*{\urlapostr} {'} %% 2010/09/10 +%% The actual change of |'| is in `\BlogCodes' +%% (\secref{catcodes}). +%% +%% %% mod. 2012/10/24f.: +%% |\bdquo| (bottom), |\ldquo|, |\rdquo|, |\sbquo| (single bottom): +\declareHTMLsymbol{bdquo} %% 2011/09/23 +\declareHTMLsymbols{{ldquo}{rdquo}} +\declareHTMLsymbol{sbquo} %% 2010/07/01 +\declareHTMLsymbols{{laquo}{raquo}} +%% Angled quotes |\laquo| and |\raquo| as well as their +%% ``single" versions |\lsaquo| and |\rsaquo|: +\declareHTMLsymbols{{laquo}{lsaquo}{raquo}{rsaquo}} %% 2012/10/25 +%% As of 2012/09/17, |\asciidq| and |\asciidqtd{<no-dqs>}| +%% (e.g., for attributes after `\catchdqs' +%% or typesetting code) +%% move to package 'catchdq.sty' in the 'catcodes' bundle. +%% +%% |\quot| accesses the same symbol in \HTML's terms +%% (e.g., for displaying code): +\declareHTMLsymbol{quot} %% 2012/01/21 +%% |\endqtd{<text>}| quotes in the English style using double quote +%% marks, |\enqtd{<text>}| uses single quote marks instead, +%% |\dedqtd{<text>}| quotes in German style, %% 2011/12/21: +%% |\quoted{<text>}| uses straight double quotation marks. +%% %% 2012/10/24: +%% Settings from the \ctanpkgref{langcode} package may need to +%% be overridden. (A warning might be nice then TODO) +\def\endqtd#1{\ldquo#1\rdquo} +\def\enqtd #1{\lq#1\rq} %% 2010/09/08 +\def\dedqtd#1{\bdquo#1\ldquo} +\def\deqtd #1{\sbquo#1\lq} %% corr. 2012/10/25 +\newcommand*{\quoted} [1]{\quot#1\quot} %% 2012/01/21 +%% |\squoted{<text>}| surrounds <text> with ``straight" +%% single quotation marks, useful for other kinds +%% of quoting in computer code: +\newcommand*{\squoted}[1]{\urlapostr#1\urlapostr} %% 2012/01/21 +%% +%% === (Sub- and) Superscript Digits/Letters === %% 2012/10/25 +%% As Plain \TeX\ and \LaTeX\ provides an alias `\sp' for +%% `^', I use |\spone|, |\sptwo|, |\spthree|, |\spa|, and +%% |\spo| for superscript 1, 2, 3, \qtd{a}, and \qtd{o}: +\newcommand*{\spone}{¹} +\newcommand*{\sptwo}{²} +\newcommand*{\spthree}{³} +\newcommand*{\spa}{ª} +\newcommand*{\spo}{º} +%% For slanted fractions, I think of \ctanpkgref{xfrac}'s +%% `\sfrac{<numerator>}{<denominator>}'. +%% |\sfrac{1}{2}|, |\sfrac{1}{4}|, and |\sfrac{3}{4}| work so far: +\newcommand*{\sfrac}[2]{&frac#1#2;} +%% +%% === Math === +%% %% divided/reordered section 2012/08/07 +%% ==== Symbols ==== +%% (\TeX\ math type ``Ord")---|\aleph|: +\renderHTMLsymbol{\aleph}{alefsym} +%% I provide |\degrees| for the degree symbol. +%% \LaTeX\ already has `\deg' as an operator, +%% therefore I do not want to use `\declareHTMLsymbol' +%% here. +\newcommand*{\degrees}{°} +%% We stick to \TeX's |\emptyset| %% 2011/05/08 +\renderHTMLsymbol{\emptyset}{empty} %% 2011/04/14 +%% |\exists| and |\forall|: %% 2012/10/05 +\renderHTMLsymbol{\exists}{exist} +\declareHTMLsymbol{forall} +%% |\prime| can be used for minutes, |\Prime| for seconds: +\renderHTMLsymbol{\prime}{prime} \declareHTMLsymbol{Prime} +%% +%% ==== Relations ==== +%% %% doc. extended 2011/05/08: +%% Because \verb+<+ and \verb+>+ are used for \HTML's +%% element notation, we provide aliases |\gt|, |\lt| +%% for mathematical $\lt$ and $\gt$---and for reference +%% to \HTML\ (or just \acro{XML}) code %% 2011/11/23 +%% (see \secref{html-verb}): +\declareHTMLsymbols{{gt}{lt}} +%% |\ge|, |\le|, and |\ne| for $\geq$, $\leq$, and $\neq$ resp.: +\declareHTMLsymbols{{ge}{le}{ne}} +%% We also provide their \TeX\ aliases +%% |\geq|, |\leq|, |\neq|: %% 2011/05/11 +\let\geq\ge \let\leq\le \let\neq\ne +%% Besides \TeX's |\subset| and |\subseteq|, +%% we provide short versions |\sub| and |\sube| %% 2011/05/08 +%% inspired by \HTML: +\declareHTMLsymbol{sub} %% 2011/04/04 +\let\subset\sub %% 2011/05/08 +\declareHTMLsymbol{sube} %% 2011/03/29 +\let\subseteq\sube %% 2011/05/08 +%% +%% ==== Delimiters ==== +%% Angle braces |\langle| and |\rangle|: +\renderHTMLsymbol{\langle}{lang} +\renderHTMLsymbol{\rangle}{rang} +%% The one-argument macro |\angled{<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 +%% +%% ==== Binary Operations ==== +%% \TeX's |\ast| corresponds to the ``lower" version +%% of the asterisk: %% here 2012/10/05 +\renderHTMLsymbol{\ast}{lowast} %% 2011/03/29 +%% |\pm| renders the plus-minus symbol: %% 2012/08/07 +\renderHTMLsymbol{\pm}{plusmn} +%% \TeX\ and \HTML\ agree on |\cap|, |\cup|, +%% and |\times|: +%% 2011/05/08 +%% 2011/04/04 +\declareHTMLsymbols{{cap}{cup}{times}} %% 2012/01/06 +%% We need |\minus| since math mode switching is +%% not supported by 'blog': %% 2011/05/08 +\declareHTMLsymbol{minus} %% 2011/03/31 +%% +%% We override \HTML's \lq`ˆ'\rq\ %% \lq\rq 2011/09/08 +%% 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} +%% {German \meta{Wikipedia}} %% 2011/09/08! +\declareHTMLsymbol{sdot} %% 2011/05/08 +%% +%% ==== Operators ==== %% 2012/08/07 +%% |\prod|, |sum|: +\renderHTMLsymbol{\prod}{product} +\declareHTMLsymbol{sum} +%% +%% +%% === Currencies === %% 2012/08/06 +%% |\cent|, |\currency|, |\euro|, |\pound|, |\yen|: %% ...symbols 2012/08/07: +\declareHTMLsymbols{{cent}{currency}{euro}{pound}{yen}} +%% You get the \$ symbol simply by |$|. +%% +%% === Other === +%% The tilde |~| is used for its wonderful purpose, +%% by analogy to \TeX (TODO overridden by `\FDpseudoTilde'): +\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} +%% Plain~\TeX's and \LaTeX's |\-| becomes a soft hyphen: +\renderHTMLsymbol{\-}{shy} +%% |\copyright|: +\renderHTMLsymbol{\copyright}{copy} +%% |\bullet| %% 2011/03/29 +\renderHTMLsymbol{\bullet}{bull} +%% \LaTeX's |\S| prints the \dqtd{\Wikienref{section sign}} +%% \qtd{\S}. In \HTML, the latter accessed by `§', +%% we \dqtd{redirect} `\S' to this: %% 2011/05/18 +\renderHTMLsymbol{\S}{sect} +%% |\dagger|, |\ddagger|: %% 2011/10/01 +\renderHTMLsymbol{\dagger}{dagger} +\renderHTMLsymbol{\ddagger}{Dagger} +%% |\P| renders the paragraph sign or pilcrow: %% 2012/08/07 +\renderHTMLsymbol{\P}{para} +%% Sometimes (due to certain local settings) the notations +%% \dqtd{`&&<characters>;'} or \dqtd{`&&&#<number>;'} +%% (for \Wikienref{Unicode}) may not be available. +%% We provide +%% \[|\htmlentity{<characters>}|\] +%% as well as +%% \[|\unicodeentity{<decimal>}|\] +%% and +%% \[|\unicodehexentity{<hexadecimal>}|\] +%% for such situations: +\newcommand*{\htmlentity}[1]{} +\newcommand*{\unicodeentity}[1]{&\##1;} +\newcommand*{\unicodehexentity}[1]{&\#x#1;} +%% +%% == \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. +\newlet\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 +%% +%% === Describing Macros === +%% With v0.4, \TeX-related \emph{links} are moved to 'texlinks.sty'. +%% +%% \leavevmode % \errorcontextlines=15 %% TODO 2011/11/05 +%% |\texcs{\<tex-cmd-name>}| or `\texcs\<tex-cmd-name>' +%% (care for spacing yourself): +\newcommand*{\texcs}[1]{\code{\string#1}} %% 2010/11/13 +%% Good old |\cs{<tex-cmd-name>}| may be preferable: +\def\cs#1{\code{\BackslashChar#1}} %% 2011/03/06 +%% |\metavar{<name>}|: %% 2011/09/22 +\newcommand*{\metavar}[1]{\angled{\meta{#1}}} +%% +%% == Tables == +%% %% 2011/04/24: rm. remark on doubtful stability, ordered +%% I am not so sure about this section ... +%% === Indenting === +%% 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{ }} +%% +%% === Starting/Ending Tables === +%% |\startTable{<attributes>}| and |\endTable| have been made +%% for appearing in different macros, such as in the two parts +%% of a `\newenvironment': +%% %% 2010/07/17: +\newcommand*{\startTable}[1]{<table #1>} +\def\endTable{</table>} +%% |\@frame@box| among the `\startTable' <attributes> +%% draws a frame around the table, |\@frame@groups| %% about -> around +%% separates ``groups" by rules: +\newcommand*{\@frame@box}{\@frame{box}} +\newcommand*{\@frame@groups}{\@frame{groups}} +%% |\begin{allrulestable}{<cell-padding>}{<width>}| +%% starts a table environment with all possible rules +%% and some code cosmetic. <width> may be empty ... +\newenvironment{allrulestable}[2] + {\startTable{\@cellpadding{#1} \@width{#2} + \@frame@box\ rules="all"}\CLBrk %% \ 2011/10/12 + \ \tbody} %% <- tbody 2011/10/13, `\ ' 2011/11/09 -> + {\ \endtbody\CLBrk\endTable} +%% \xmltagcode{tbody}...\xmltagcode{/tbody} seemed to be +%% better with `\HVspace' for 'blogdot.sty', %% 2011/10/13 +%% so it gets an environment |{tbody}| +%% (i.e., macros |\tbody| and |\endtbody|): +\useHTMLelement{tbody}{tbody} +%% +%% === Rows === +%% 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 ... +%% +%% |\begin{TableRow}{<comment>}{<attributes>}|\\ starts an environment +%% producing an \HTML\ comment <comment> and a table row +%% with attributes <attributes>, including code cosmetic. +\newenvironment*{TableRow}[2]{%% lesser indentation 2011/04/25 + \ \comment{ #1 }\CLBrk + \indenti<tr #2>% + }{% + \indenti\endtr} %% \endtr 2011/11/08 +%% |\begin{tablecoloredrow}{<comment>}{<background-color>}|\\ +%% is a special case of `{TableRow}' where `@bgcolor' is the only +%% attribute: +\newenvironment{tablecoloredrow}[2] + {\TableRow{#1}{\@bgcolor{#2}}} + {\endTableRow} +%% |\begin{tablecoloredboldrow}{<comment>}{<background-color>}|\\ +%% is like `{tablecoloredrow}' except that content text is +%% rendered in boldface (TODO horizontal centering?): +\newenvironment{tablecoloredboldrow}[2] %% 2011/11/03/08 + {\TableRow{#1}{\@bgcolor{#2} + \@style{font-weight:bold}}} + {\endTableRow} +%% |\begin{tablerow}{<comment>}| %% rm. {<b...>} 2011/12/19 +%% is a special case of `{TableRow}' where the only attribute +%% yields ``top" vertical alignment (TODO strange): +%% %% ``top" 2010/05/18: +\newenvironment{tablerow}[1]{\TableRow{#1}{\@valign@t}} + {\endTableRow} +%% |\starttr| and |\endtr| delimit a row; these commands again +%% have been made for appearing in different macros. +%% There is \emph{no} code indenting, probably for +%% heavy table nesting where indenting was rather useless +%% (? TODO only in 'texblog.fdf'? there indents would have +%% been useful). +%% %% 2010/07/18: +\newcommand*{\starttr}{<tr>} +\def\endtr{</tr>} +%% +%% === Cells === +%% |simplecell{<content>}| produces the most \emph{simple} kind of +%% an \HTML\ table cell: +\newcommand*{\simplecell}{\SimpleTagSurr{td}} %% 2010/07/18 +%% |\TableCell{<attributes>}{<content>}| produces the most +%% \emph{general} kind of a cell, together with a code indent: +%% % \newcommand*{\TableCell}[2]{\indentiii<td #1>#2</td>} +%% % \newcommand*{\TableCell}[2]{\indentiii\TagSurr{td}{#1}{#2}} +%% %% <- 2010/07/18 -> +\newcommand*{\TableCell}[2]{\indentiii\startTd{#1}#2\endTd} +%% |\colorwidthcell{<color>}{<width>}{<content>}| +%% uses just the `@bgcolor' and the `@width' attribute: +%% %% 2010/06/15: +\newcommand*{\colorwidthcell}[2]{\TableCell{\@bgcolor{#1}\@width{#2}}} +%% |\tablewidthcell{<color>}{<width>}{<content>}| +%% uses just the `@bgcolor' and the `@width' attribute: +\newcommand*{\tablewidthcell}[1]{\TableCell{\@width{#1}}} +%% %% |\tablewidthcell{<color>}{<width>}{<content>}| %% 2011/11/09 +%% %% uses just the `@bgcolor' and the `@width' attribute: +%% %\newcommand*{\tablecolorcell}[1]{\TableCell{\@bgcolor{#1}}} +%% |\tablecell{<content>}| is like `\simplecell{<content>}', +%% except that it has a code indent: +\newcommand*{\tablecell}{\TableCell{}} +%% |\tableCell{<content>}| is like `\tablecell{<content>}', +%% except that the content <content> is horizontically centered. +%% The capital `C' in the name may be considered indicating +%% ``\strong{c}entered": +\newcommand*{\tableCell}{\TableCell\@align@c} +%% Idea: use closing star for environment variants!? +%% +%% |\begin{bigtablecell}{<comment>}| +%% starts an \emph{environment} yielding a table cell element +%% without attributes, preceded by a \HTML\ comment +%% <comment> unless <comment> is empty. At least the \HTML\ tags +%% are indented: +%% %% 2010/05/19: +\newenvironment{bigtablecell}[1]{\BigTableCell{#1}{}} + {\endBigTableCell} +% {\ifx\\#1\\% %% 2010/05/30 +% \indentii\ \comment{#1}\CLBrk +% \fi +% \indentiii<td>} +% {\indentii</td>} %% !? 2010/05/23 +%% |\begin{BigTableCell}{<comment>}{<attributes>}|\\ +%% is like `\begin{bigtablecell{<comment>}}' except that it uses +%% attributes <attributes>: +%% %% 2010/06/05: +\newenvironment{BigTableCell}[2] + {\ifx\\#1\\\indentii\ \comment{#1}\CLBrk\fi + \indentiii\startTd{#2}} + {\indentii\endTd} %% TODO indent? 2010/07/18 +%% |\startTd{<attributes>}| and |\endTd| delimit a cell element +%% and may appear in separate macros, e.g., in an environment +%% definition. There is no code cosmetic. And finally there is +%% |\StartTd| that yields less confusing code without attributes: +%% %% 2010/07/18: +\newcommand*{\startTd}[1]{<td #1>} +\newcommand*{\StartTd}{<td>} %% 2011/11/09 +\def\endTd{</td>} +%% |\emptycell| uses \xmltagcode{td /} instead of +%% \xmltagcode{td}\xmltagcode{/td} for an empty cell: +\newcommand*{\emptycell}{<td />} %% 2011/10/07 +%% +%% === ``Implicit" Attributes and a ``\TeX-like" Interface === +%% %% <- 2011/11/08 -> +%% After some more experience, much musing, and trying new tricks, +%% I arrive at the following macros (v0.7). \ +%% (i)\enspace When a page or a site has many tables that use the same +%% attribute values, these should not be repeated for the single +%% tables, rather the values should be invoked by shorthand macros, +%% and the values should be determined at a single separate place. +%% We will have |\stdcellpadding|, %%% |\stdtableheadrow|, +%% |\stdtableheadcolor| and +%% |\stdtableheadstyle|. \ +%% (ii)\enspace As with \TeX, `\cr' should suffice to \emph{close} +%% a \emph{cell} and a \emph{row}, and then to \emph{open} another +%% \emph{row} and its first \emph{cell}. And there should be a +%% single command to close a cell within a row and open a next one. +%% +%% We use `\providecommand' so the user can determine the values +%% in a file for 'blog' where 'blogexec' is loaded later. +%% |\stdcellpadding| should correspond to the \CSS\ settings, +%% the value of `6' you find here is just what I used recently. +\providecommand*{\stdcellpadding}{6} +%% For |\stdtableheadcolor|, I provide a +%% % ``web-safe" %% very wrong 2012/05/13 +%% gray, `#EEEEEE', that the German Wikipedia uses for articles about +%% \Wikienref{networking protocol}s +%% (unfortunately, it doesn't have a +%% \wikienref{Web colors\#X11_color_names}{% +%% \CSS-3}\wikienref{X11 color names}{X11} color name): +\providecommand*{\stdtableheadcolor}{\#EEEEEE} +%% |\stdtableheadstyle| demands a boldface font. +%% In general, it is used for the `@style' attribute: +\providecommand*{\stdtableheadstyle}{font-weight:bold} +%% |\begin{stdallrulestable}| starts an `{allrulestable}' +%% environment with ``standard" cell padding and empty width +%% attribute, then opens a ``standard" row element +%% with a ``standard" comment as well as a cell: +\newenvironment{stdallrulestable}{% + \allrulestable{\stdcellpadding}{}\CLBrk + \TableRow{standard all-rules table}% + {\@bgcolor{\stdtableheadcolor} + \@style{\stdtableheadstyle}}\CLBrk + \indentii\StartTd +%% `\end{stdallrulestable}' will provide closing of a cell +%% and a row, including a code cosmetic: + }{\indenti\endTd\CLBrk\endTableRow\CLBrk + \endallrulestable} +%% |\endcell| closes a cell and opens a new one. The idea behind +%% this is that an active character will invoke it. The name is +%% inspired by `\endgraf' and `\endline' from Plain \TeX\ and +%% \LaTeX\ (`\newcommand' does not work with `\end'\code{\dots}): +\def\endcell{\endTd\StartTd} +%% Plain \TeX's and \LaTeX's |\cr| and |\endline| are redefined +%% for closing and opening rows and cells, including code cosmetic: +\renewcommand*{\cr}{\indentii\endTd\CLBrk\indenti\endtr\CLBrk + \indenti\startTR\CLBrk\indentii\StartTd} +\let\endline\cr +%% |\startTR| is a hook defaulting to `\starttr': %% 2012/08/23 +\newlet\startTR\starttr +%% +%% === Filling a Row with Dummy Cells === +%% These macros were made, e.g., for imitating a program window +%% with a title bar (spanning someting more complex below), +%% perhaps also for a Gantt chart. +%% |\FillRow{<span>}{<attributes>}| produces a cell without text, +%% spanning <span> columns, with additional attributes <attributes>. +%% %% 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} +%% |\fillrow{<span>}| instead only uses the `@colspan' attribute: +\newcommand*{\fillrow}[1]{\FillRow{#1}{}} +%% |\fillrowcolor{<span>}{<color>}| just uses the `@colspan' +%% and the `@bgcolor' attributes: +\newcommand*{\fillrowcolor}[2]{\FillRow{#1}{\@bgcolor{#2}}} +%% === Skipping Tricks === +%% %% 2011/10/13 +%% |\HVspace{<text>}{<width>}{<height>}| may change, +%% needed for 'blogdot.sty' but also for |\vspace{<height>}| +%% with 'texblog'. It is now here so I will be careful +%% when I want to change something. \xmltagcode{tbody} +%% improved the function of `\HVspace' constructions +%% as link text with 'blogdot.sty'. +\newcommand*{\HVspace}[3]{% + \CLBrk + \startTable{\@width{#2} \@height{#3} + \@border{0} + \@cellpadding{0} \@cellspacing{0}}% + \tbody + \CLBrk %% 2011/10/14 + \tablerow{HVspace}% %% 2011/10/13 +%% <- inserting text at top for 'blogdot' attempts---that +%% finally did not help anything (2011/10/15) -> + \simplecell{#1}% + \endtablerow %% 2011/10/13 + \CLBrk %% 2011/10/14 + \endtbody + \endTable + \CLBrk} +%% |\hvspace{<width>}{<height>}| ...: +\newcommand*{\hvspace}{\HVspace{}} +%% |\vspace{<height>}| ... (TODO: `{0}'!?): +\renewcommand*{\vspace}[1]{\hvspace{}{#1}} +%% +%% == Misc == +%% \TeX's |\hrule| (rather deprecated in \LaTeX) is redefined +%% to produce an \HTML\ horizontal line: +\renewcommand*{\hrule}{<hr>} +%% 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. +%% +%% == Leaving and HISTORY == +\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 MOREHYPE 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 +part of MOREHYPE RELEASE r0.4 +v0.6 2011/09/08 doc. uses \HTML, \lq/\rq with ˆ, + doc. fix `mult-'; \degrees + 2011/09/21 \acronym + 2011/09/22 \metavar; TODO \glqq... + 2011/09/23 \bdquo + 2011/09/25 doc. `Characters/Symbols'; \figurespace + 2011/09/27 "universal" attributes completed, reworked doc. + 2011/09/30 end lists with </li> + 2011/10/01 \dagger, \ddagger + 2011/10/04 \item includes </li> [2011/10/11: ???] + 2011/10/05 {style}; doc. \acronym -> \acro, \pagebreak, + rm. \description; {center} accesses <center>, + \useHTMLenvironment replaces \declareHTMLelement + and \renderHTMLelement, message "generating" + 2011/10/07 \emptycell + 2011/10/10 doc.: page breaks, $$->\[/\] +part of MOREHYPE RELEASE r0.5 +v0.61 2011/10/11 </li> in \item again, \Provides... v wrong + 2011/10/12 \hnewref, `\ ' in allrulestable + 2011/10/14 \CLBrk's + 2011/10/15 doc. note on \HVspace/blogdot +part of MOREHYPE RELEASE r0.51 +v0.62 2011/10/16 \hyperlink, \hypertarget; doc. fixes there + 2011/10/20 \textcolor by <span>, \textsf + 2011/10/21 \ctanref now in texlinks.sty; + doc.: grammar with `that' + 2011/10/22 \BlogCopyFile message removed +part of MOREHYPE RELEASE r0.52 +v0.7 2011/11/03 {tablecoloredboldrow} + 2011/11/05 \ContentAtt -> \@content, + \BlogCopyFile -> \BlogProcessFile (blogexec), + doc. different \pagebreak's + 2011/11/06 run \BlogCopyLines, doc. \[...\] + 2011/11/07 \ProvideBlogExec + 2011/11/08 \endtr in \endTableRow, using \MakeOther, + right quote change moves to \BlogCodes, + \BlogInterceptHash; rm. \AmpMark & doc. about it, + mod. on #; doc. for tables; start doc. "implicit" + table attributes and "TeX-like" interface + 2011/11/09 \tablecolorcell(?); cont. "implicit" etc.; + \StartTd + 2011/11/20 \isotoday, \BlogProcessFinalFile, + catcodes of `<' `>' untouched; restructured, + structured processing, misc -> ordinary + 2011/11/21 BlogLIGs + 2011/11/23 \xmltagcode, \xmlentitycode, \c; + doc: <p>, \secref, \pagebreak + 2011/11/24 doc: example results for diacritics + 2011/11/27 \ParseLigs; doc. rm. \pagebreak + 2011/12/12 \title uses \SimpleTagSurr + 2011/12/19 doc. fix {tablerow} + 2011/12/21 \asciidq, \asciidqtd + 2012/01/06 \acro; using dowith.sty (\declareHTMLsymbols); + doc.: cross-referring for naming policies + 2012/01/07 \MakeActiveDef\~ for \FDpseudoTilde + 2012/01/11 (C) + 2012/01/21 \quot, \quoted. \squoted + 2012/02/04 \newacronym + 2012/03/14 removed hidden and another comment with + \BlogCopyLines, fixed latter, TODO on \NoBlogLigs + 2012/03/17 tweaked \@typeset@protect for \EXECUTE + 2012/03/30 space in stdallrules... after @bgcolor + 2012/04/03 \CLBrk in \@useHTMLelement + 2012/04/09 \htmlentity, \unicodeentity + 2012/05/13 \ss; better comment on \uml; + #EEEEEE not "web-safe" + 2012/05/15 xEDIT folding in tables section +part of MOREHYPE RELEASE r0.6 +v0.8 2012/06/07 \underbar + 2012/07/25 arrows completed [no: 2012/09/13]; + doc. "police" -> "policy" + 2012/07/30 \spanstyle, applied; doc. \pagebreak + 2012/08/01 \textup + 2012/08/02 doc. corr. braces for \DeclareHTMLsymbols + 2012/08/06 sec. currencies + 2012/08/07 divided math section, using \declareHTMLsymbols, + various additional symbols + 2012/08/23 \startTR + 2012/08/28 \MakeActiveLet\'\rq with `actcodes.sty', + attributes start with space + 2012/09/02 about -> around + 2012/09/06 Content-T -> content-t - bugfix?, + \BlogProvidesFile with DOCTYPE, some attribute + lists rely on space from \declareHTMLattrib, + there another \reserved@a; + "Head": \metanamecontent, \metanamelangcontent + 2012/09/07 "Head": \author, \date, \metadescription, + \keywords; lang variants + 2012/09/08 \TagSurr and \MetaTag without space, + \declareHTMLattrib{align}, \@valign@t adjusted; + \pagebreak[3] + 2012/09/13 \crarrow, "Fonts" -> "Physical markup" etc., + \abbr, \newabbr + 2012/09/14 \xmleltcode, \xmleltattrcode; el-name -> elt-name + 2012/09/17 \asciidq + \asciidqtd move to `catchdq.sty' + 2012/10/03 \newlet; + doc.: label process -> catcodes, using \secref + 2012/10/05 moved \ast; \exists, \forall + 2012/10/24 quotes: completed, override `langcode.sty' + 2012/10/25 using \DeclareHTMLsymbols for quotes, corr. there, + \spone etc., \sfrac + 2012/10/28 spanstyle -> stylespan + 2012/11/16 \TagSurr and \MetaTag with space again + 2012/11/19 \endgraf -> <p> + 2012/11/29 `blogligs.sty', `markblog.sty' ([ligs], [mark]) +part of MOREHYPE RELEASE r0.7 +v0.81 2012/12/20 \-, {enumtype} + 2013/01/02 caron, "Ligatures ..." (æ etc.) + 2013/01/04 updating copyright +part of MOREHYPE RELEASE r0.81 +v0.81a 2013/01/21 \newlet in subsubsection |