aboutsummaryrefslogtreecommitdiff
path: root/utility
AgeCommit message (Collapse)Author
2018-05-28Add Nix derivation for KaTeXAdrian Kummerlaender
One step closer to a fully declarative website build environment.
2018-05-27Add Nix derivation, dependenciesAdrian Kummerlaender
2017-11-19Fix pandoc call to generate XHTML output instead of HTML5Adrian Kummerlaender
2017-10-04Fix footnote links, backlinks for all article outputsAdrian Kummerlaender
See also ea80a43
2017-06-01Add Edge link font workaround for footnote backlinksAdrian Kummerlaender
2017-02-12Remove page, category functionality as it is now provided by ↵Adrian Kummerlaender
`tree.kummerlaender.eu`
2017-01-17Use `pandoc` as markdown processorAdrian Kummerlaender
The trigger but not the actual reason for this replacement of `kramdown` with `pandoc` was a strange generation issue with `kramdown`'s latest release. All recent articles failed to generate anything more than an empty page. A quick check of the resulting HTML for those articles offered nothing out of the ordinary. After taking a close look at the articles in question I narrowed the set of failing articles down to those containing footnotes - tangentially I only started using footnotes a couple of articles ago i.e. this explained this part of the issue. Some debugging of `InputXSLT` offered the following problem: `Xerces-C` generated an error message and stopped processing XML inputs containing `nbsp` non-blocking space characters in the implementation of the `external-command` function. This change in `kramdown`'s output can be traced back to enhancement issue [399](https://github.com/gettalong/kramdown/pull/399). Obviously this is not a problem in `kramdown` but an issue in the way this static site generator is wrapping HTML inputs. This problem should be solvable by adding appropriate namespace and doctype declarations to the markdown-generated HTML output. Instead I opted to perform the change to `pandoc` I had already planned for quite some time. The choice fell on `pandoc` as it offers some additional markdown features as well as allowing for conversion to a rich set of document formats. i.e. features like printing articles as PDF using LaTeX are trivial to implement if `pandoc` is the markdown processor of choice. Furthermore page compilation is noticeably faster using `pandoc`. One might note that this switch only solved the original issue by coincidence: Should `pandoc` start to generate non-blocking space characters the same problem will occur. But I have hopes that such a change would be configurable via `pandoc`'s plethora of configuration options. As this static site generator assumes everything to be XHTML I see no reason why I should not continue to treat HTML inputs as XML.
2016-12-20Switch server side math renderer to _KaTeX_Adrian Kummerlaender
_KaTeX_ offers explicit support for server-side rendering instead of the hacky solution using _Mathjax_. Furtermore it ist noticeably faster and produces better output in my test cases.
2016-10-22Add Atom feed link to headerAdrian Kummerlaender
* enables automatic detection of the feed in e.g. Opera
2016-09-01Include mathjax CSS also for pages containing only inline expressionsAdrian Kummerlaender
2016-08-31Add _Overview_ like digest start page, remove stream from center stageAdrian Kummerlaender
* stream view is still available from the archive to preserve backwards compatability * reduce layout / styling differences between kummerlaender.eu and this blog
2016-05-30Link footnotes in article stream to appropriate single article pageAdrian Kummerlaender
Previously multiple footnotes on article stream pages caused conflicts between articles and as such only worked correctly for the first article on each stream page.
2016-05-21Forward math expression type (block/inline) to formatterAdrian Kummerlaender
Add support for header elements with inline math expressions
2016-05-15Implement support for inline math expressionsAdrian Kummerlaender
2016-05-05Only add workaround comment for empty `span` nodesAdrian Kummerlaender
See paragraph 5 in 67162f80a77a41bc95d7de05a87f7ee9a21a121c
2016-05-04Implement support of server side math expression renderingAdrian Kummerlaender
Many websites employ the [MathJax](https://www.mathjax.org/) library for dynamically rendering LaTeX math expressions on the client side. I expect to require support for doing just that in the future. But as with syntax highlighting I am of the opinion that this kind of stuff should be performed once during site compilation instead of wasting ressources by forcing each client to do this job for every single page request. Luckily there is a [MathJax-node](https://github.com/mathjax/MathJax-node) module that allows using the _MathJax_ library on the server side. This commit adds support for rendering math expressions written in Markdown respectively LaTeX as follows: `$$1 + 1 \neq 0$$` on the server side. This required the introduction of a new `math_highlighter` helper template in `formatter.xsl` based on the `tex2html` utility provided by _MathJax-node_. This formatter is matched against the (Markdown parser generated) `script` node in `formatter.xsl`'s _embellish_ mode. The HTML rendering of the expression is then embedded in a `p class="math"` node. This explicit labeling allows `master.xsl` to include the `math.css` rules only for pages that actually contain math expressions. Note that the XHTML rendering utility stylesheet `xhtml.xsl` currently adds a XML comment to each `span` node. This is a workaround to prevent _Xalan_ from collapsing "empty" `span` tag pairs into single nodes which otherwise leads to rendering errors as it is not valid HTML and is interpreted as a wrong tree structure by the browser. Note that the CSS rules declared in `math.css` are explicitly not part of the MIT licensed part of this repository but where generated by _MathJax_. As there is currently no _productive_ content making use of math expressions a demo page is available under `page/math_test/`.
2015-03-22Revamped layout to be more minimalistic and readableAdrian Kummerlaender
* removed background image and as such it's fixed pixel width ** i.e. the layout is now completely dependent on the basic font size and scales accordingly * revamped master template and CSS to allow for nodes with varying lengths instead of truncating everything depending on the background width * increased font size of tag and archive pages * increased overall line height to improve readability * improved CSS to e.g. make use of `last-child` instead of adding `last` classes during static site generation * removed _microblog_ entries from archive as I have more or less stopped using _Twitter_
2015-03-11Improved navigation on small screensAdrian Kummerlaender
* extracted navigation and tag list style into `buttonlist` class * navigation is now aligned left and non-overlapping on small screens
2014-12-09Replaced function-like data resolution with template applicationsAdrian Kummerlaender
* e.g. article and tag support data is now fetched through direct _XPath_ template applications ** this required the introduction of a special `resolve` mode to prevent interaction between support and main content resolution ** in most cases arguments had to be wrapped inside helper constants to enable selection of e.g. article support data via the `@handle` attribute using the current elements `@handle` attribute * analogously to the recent changes in _StaticXSLT_ this commit aims to improve the XSLT code style used in generating this static website
2014-10-29Removed remnants of layout iteration and cleaned CSSAdrian Kummerlaender
* both the CSS and master template markup contained cruft from the previous blog version and its slightly different layout * removed unnecessary distinction between footer and its _taglist_ as the old footer element is now only a _taglist_ ** promoted previous `last_line` to `footer` as it is the actual footer * unified the different list styles as much as possible ** e.g. introduced new `topline` attribute instead of declaring the title-separator line for each style separately ** removed `taglist` class by declaring its rules directly in the `tags` id ** removed now unnecessary `archivtag` class ** introduced `sparselist` class which enables list such as the one contained the latest microblog entries to have extra padding * merged `list_tags` helper template into primary master template ** this separation was not only unnecessary but decreased the readability as it provided no real encapsulation
2014-10-28Added description meta tag to master templateAdrian Kummerlaender
* eliminated `last_item` list item class by fixing its padding
2014-10-12Updated website project page and added StaticXSLT pageAdrian Kummerlaender
* this was done to match the recent extraction of the generic static site generation framework into a separate project
2014-09-12Changed footer source link to project the appropriate project pageAdrian Kummerlaender
2014-09-11Fixed XHTML namespace generationAdrian Kummerlaender
* all datasources are generated as namespace-less XML * the resulting documents have to define the XHTML namespace ** i.e. the article and page contents have to be copied into the XHTML namespace * implemented XHTML copy helper templates * modified page templates accordingly * defined XHTML namespace in the master template
2014-09-11Expanded formatter embellishment templatesAdrian Kummerlaender
* XHTML elements "h2" and "h3" are replaced with "h3" and "h4" respectively ** modified all existing contents accordingly ** this was done to avoid the gap between the primary heading and subheadings in the markdown depiction of the contents * fleshed out the InputXSLT project page with further information
2014-09-10Added faviconAdrian Kummerlaender
* modified master transformation accordingly * fixed small syntax and grammer error in about page content ** missing dot and missing "and"
2014-09-09Removed unnecessary absolute linksAdrian Kummerlaender
* there is no reason for generating absolute links as the resulting pages will be served on their own domain
2014-09-09Changed footnote link to point to the sites repositoryAdrian Kummerlaender
2014-09-04Extracted formatter functionality into formatter helper stylesheetAdrian Kummerlaender
* functionality for formatting markdown using kramdown and embellishing the result with e.g. syntax highlighting is required for all content types
2014-08-24Implemented basic generation summaryAdrian Kummerlaender
* "summarize.xsl" processes the result-tree of "process.xsl" and outputs a basic plain-text summary ** the plain-text summary is returned as the sole result of calling "make.xsl" * this approach should be easily extensible into i.e. a verbose version in the future * unraveled "make.xsl" structure into separate variables
2014-08-23Revamped source tree traversionAdrian Kummerlaender
* this was done to be able to implement directory symlinking * the generation process is now split into three transformations ** the actual work is performed by "list.xsl" and "traverse.xsl" respecitively ** "make.xsl" wraps these two transformations *** i.e. generation is now launched by executing "ixslt --transformation make.xsl" * checked background images into VCS
2014-08-18Implemented basic cleaning and linking facilitiesAdrian Kummerlaender
* e.g. removing the target directory before each regeneration and symlinking CSS files ** this will be extended to include ressource directories and so on * renamed "formatter.xsl" stylesheet to "helper.xsl" as it now includes various helper templates * finally checked the main CSS into the VCS
2014-08-17Updated formatter helper templateAdrian Kummerlaender
* recent changes in InputXSLT revamped "external-text-formatter" into a general "external-command" function * this changes were implemented to enable e.g. symlinking and copying files from the source to the target
2014-08-11Implemented page categorization functionalityAdrian Kummerlaender
* expanded "02_data/pages.xsl" transformation to include pages in subfolders * "03_meta/categories.xsl" transformation generates a categorized view of all pages simmilar to the one provided for tags by "03_meta/tags.xsl" * "99_result/category/category.xsl" transformation generates category overview pages * added basic project related pages inside the "projects" category
2014-08-10Minor improvements to article, stream and master transformationAdrian Kummerlaender
* wrap text in "xsl:text elements to clean up the output
2014-08-10Switched content formatter to kramdownAdrian Kummerlaender
* implemented language selection for automatic syntax highlighting ** language selection requires the language to be used to be passed as a class of the code element ** kramdown enables easy definition of this class attribute * kramdown offers more functionality such as table and class attribute support * updated all articles accordingly
2014-08-06Improved automatic source code highlightingAdrian Kummerlaender
* disable indentation in both the page and datasource master stylesheets ** indentation was interfering with correct output of formatted code * simplified call to formatter helper template
2014-08-04Changed base url and url schemeAdrian Kummerlaender
* base url is now a local webserver for more realistic testing ** i.e. otherwise the atom feed is not served correctly * article, page, tag and stream pages are now generated as "index.html" inside appropriately named directories ** this is needed for pretty urls that actually work
2014-07-28Implemented basic atom feed transformationAdrian Kummerlaender
* atom was choosen in favor of RSS mainly because it is not easily possible to generate the required RSS timestamp in xalan-c (day of the week required) * modified master template accordingly
2014-07-27Improved article stream title-text templateAdrian Kummerlaender
* returns "Start" for the first page instead of "Page 0" ** this corresponds to the navigation * changed "Start" navigation link in master template * i.e. the index page is named "0", server config will have to be changed accordingly ** thought about generating it as "index" directly ** while this is possible using the XPath evaluation functionality of the target meta attribute the lack of a if-statement in XPath 1.0 would require a very ugly workaround (e.g. the answer to http://stackoverflow.com/questions/971067/is-there-an-if-then-else-statement-in-xpath)
2014-07-27Implemented article stream generationAdrian Kummerlaender
* stream transformation is iterated over the paginated article datasource implemented in 854eab6 * stream template contains navigation generation for traversing the article stream
2014-07-26Removed unnecessary namespace declarationsAdrian Kummerlaender
* xalan and/or InputXSLT namespace should only be included when they are actually required
2014-07-26Added meta datasourceAdrian Kummerlaender
* merges the content of the "00_content/meta.xml" file with additional data such as the available tags * simplifies providing a basic datasource to every result transformation * modified master, article and tag page template accordingly
2014-07-26Included unaugmented tag datasource into the page footerAdrian Kummerlaender
* the master template generates a list of all available tags into the footer ** this currently requires the unaugmented tags datasource to be included into every template making use of the master template
2014-07-25Added root variable to datasource templateAdrian Kummerlaender
* this was done to simplifiy support data queries while resolving the main datasource
2014-07-25Changed master template text elements to EnglishAdrian Kummerlaender
2014-07-25Moved result transformations into "99_result"Adrian Kummerlaender
* otherwise it is not easily possible to add additional datasource layers between the content and result generation level * changed meta url appropriately
2014-07-20Implemented new "layered" site generation architectureAdrian Kummerlaender
* "source" directory contains layers as subdirectories ** ordered by their name ** e.g. layer 0 is "00_content" and contains the content alongside some metadata * transformations contained within the "source" layers are processed sequentally * transformations define their requirements in a "meta" variable ** the "meta" variable is interpreted by the core transformation "generate.xsl" * requirements are currently datasources and target information ** every transformation may have one datasource of type "main" *** this data source offers e.g. the option to iterate over it ** every transformation may have a arbitrary number of "support" datasources *** e.g. "meta" is a support datasource ** the target node may provide a fixed target path or a Xpath to be evaluated * the result of each transformation is written to the appropriate layer of the "result" directory * this approach to XSLT based static site generation should be quite flexible and offer good expandability ** e.g. adding new datasource options and types
2014-07-19Reactivated basic page generationAdrian Kummerlaender
* page template is called by the pages compiler * modified master transformation to match new meta structure * the context variable needed by the context transformation now has to be defined in every template using the transformation ** this is needed to accomodate different input DOM structures
2014-07-17Implemented basic page compilation facilitiesAdrian Kummerlaender
* templates in 'template/compiler' are automatically generated ** required datasources are extracted and merged automatically ** 'pages.xsl' is currently a dummy compiler * moved context helper templates into context stylesheet * added compiler directory to meta DOM * modified generator and transformer helper templates to enable usage of DOM as input