publisher
keenwrite-themes
publisher | keenwrite-themes | |
---|---|---|
8 | 13 | |
287 | 6 | |
0.3% | - | |
9.3 | 0.0 | |
11 days ago | 8 months ago | |
Lua | TeX | |
GNU Affero General Public License v3.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
publisher
-
Unit Testing PDF Generation
https://github.com/speedata/publisher/tree/develop/qa (the tests)
-
seeking options: data + template = PDF output (print ready)
The link: https://www.speedata.de/
-
How does OSS projects handle their enterprise editions in terms of codebase?
See for example the directory here: https://github.com/speedata/publisher/tree/develop/src/go/server
- Speedata Publisher
-
I love LaTeX. I hate LaTeX
I have a related feeling about TeX. It has superb output quality but the programming is awful. When LuaTeX finally arrived a few years ago, it was possible to do almost everything you have done before in the TeX language (starting with \backslashes) in Lua.
See http://wiki.luatex.org/index.php/TeX_without_TeX for an introduction.
I have (shameless plug) created a database publishing software using this technique (https://github.com/speedata/publisher/). Once in a while I have to use LaTeX and it feels a bit old school to do the macro programming.
My next project is to rewrite the TeX algorithms in Go - see https://github.com/speedata/boxesandglue. Already usable but not TeX like in any way (this is just a library, not a frontend software like TeX)
- Speedata Publisher – a professional database Publishing system
-
LuaTeX Comes of Age
LuaTeX is what TeX should have been from the start (and would have been, if the technology of the time had permitted it). Apart from modern Unicode and font-handling, the main thing IMO is the hooks it provides (in the form of callbacks).
With other TeX engines (mainly: pdfTeX, XeTeX, or the original Knuth TeX), the only "programming" facility is in the form of macros, which were originally added by Knuth only for some simple text substitution to save typing. He never intended to add programming features into TeX, but of course, it doesn't take much to become "accidentally Turing-complete", and that's what TeX macros became. (There's also some rudimentary support for counters/registers, which Knuth added after he found users were (ab)using macros to encode numbers using unary or Church numerals.) So the only way to influence anything TeX does automatically, whether it's hyphenation or line-breaking or page-breaking or whatever, is to set up some macros whose blind expansion will ultimately result in the outcome you want, without affecting anything else (e.g. even an accidental space might get typeset with undesirable results). This of course is cumbersome and error-prone.
With LuaTeX you can program these things at the level you actually intend, e.g. while you can still use macros (or use the `process_input_buffer` callback in Lua), you can now also directly, say, influence the page layout, in a Lua callback that is actually aware of data at the relevant level of abstraction (the vboxes on the page, say), rather than everything being at the lowest (text expansion) level.
Knuth has said that he never intended for TeX macros to be used as a full-fledged programming language (he expected people would directly edit the SAIL/Pascal code of the TeX program for anything nontrivial), and that he dislikes each tool coming with its own Turing-complete programming language, and that if a standard embeddable programming language had been available he'd of course have used it in TeX — I think Lua would count.
You can see "TeX without TeX" page on the LuaTeX wiki for an example of the power of LuaTeX, typesetting with TeX while completely bypassing TeX syntax: http://wiki.luatex.org/index.php/TeX_without_TeX — a more elaborate production system is Speedata Publisher: https://github.com/speedata/publisher
As for myself, here is the most fancy thing I did with LuaTeX: https://tex.stackexchange.com/questions/401604/book-on-a-sin... (never "productionized" into a package or whatever). Also, something possibly illuminating is this TeX-vs-LuaTeX comparison of something hyphenation-related (https://tex.stackexchange.com/questions/378704/how-to-avoid-...), and in this answer (https://tex.stackexchange.com/questions/398310/why-in-2017-d...) I link to some other times I used LuaTeX, though some of them just use the Lua part of LuaTeX rather than LuaTeX hooks, such as computing digits of pi for generating pretty pictures (https://tex.stackexchange.com/questions/367902/tikz-color-op...).
- Show HN: I built Creodocs, a document creation platform based on LaTeX
keenwrite-themes
-
LaTeX for publishing tabletop role-playing games
This gets styled in the PDF as:
https://i.ibb.co/ZfZXmDn/output.png
Various styles are packed in themes, which the user can select when exporting to PDF. At present, there are only three themes:
https://github.com/DaveJarvis/keenwrite-themes/tree/main/exa...
There other styles in the Boschet theme, such as speech bubbles, TODOs, and so forth:
::: bubbletx
- On why Markdown is not a good, or even a half-decent, markup language
-
Millions of dollars in time wasted making papers fit journal guidelines
KeenWrite Themes[1] are instructions that tell ConTeXt how to typeset XHTML documents (content) into PDF files (presentation). I made a tutorial that shows how my FOSS desktop text editor, KeenWrite[3], allows users to write in Markdown to typeset a document against a particular theme.
Before it can be used for scientific papers, it needs cross-references, which, unfortunately, aren't part of the CommonMark specification.
I posit that the vast majority of LaTeX users don't grok how to separate content from presentation. When I asked a question on TeX.SE about how to adjust the line spacing between enumerated items (spanning a couple dozen enumerated lists), the vast majority of people voted for the answer of using `\itemsep0em` to tweak each list ... individually.[4] The correct answer, IMO, is to fix the problem globally, and not waste time tweaking individual lists.
[1]: https://github.com/DaveJarvis/keenwrite-themes
[2]: https://www.youtube.com/watch?v=3QpX70O5S30
[3]: https://github.com/DaveJarvis/keenwrite
[4]: https://tex.stackexchange.com/questions/6081/reduce-space-be...
-
Lua: The Little Language That Could
The ConTeXt typesetting system tightly integrates Lua. One aspect of Lua that I dislike is its inability to easily write OOP-ish code. What's impressive about the language is that it can be extended to do so in astonishingly little code:
* https://github.com/kikito/middleclass
With OOP in place, I was able to typeset a hexagonal grid and a symbolic representation of a neural network on top, using a more OOP-like approach. The classes are straightforward.
A vertex defines a point in 2D space:
* https://github.com/DaveJarvis/keenwrite-themes/blob/main/bos...
An edge connects two vertices:
* https://github.com/DaveJarvis/keenwrite-themes/blob/main/bos...
A graph connects edges:
* https://github.com/DaveJarvis/keenwrite-themes/blob/main/bos...
A priority queue serves for ordering graph edges by weight of adjoining vertices:
* https://github.com/DaveJarvis/keenwrite-themes/blob/main/bos...
With these concepts in hand, we can typeset a grid and a "neural network" on top:
* https://github.com/DaveJarvis/keenwrite-themes/blob/main/bos...
Here's an example of the output for chapter 1:
* https://i.ibb.co/19DCDZy/ch-1.png
And chapter 14, where the "network" has grown in complexity:
* https://i.ibb.co/ncf16vg/ch-2.png
This is for my near future hard sci-fi book on AGI. I'm looking for alpha readers to give me feedback. See profile for contact details.
-
KeenWrite 3.2.0
KeenWrite uses themes to control every aspect of the presentation layer: leader dots, indentation levels, fonts, colours, hyperlinking, and so forth. This is accomplished by first converting R Markdown to XHTML then passing the XHTML to ConTeXt.
-
Pure Java Typesetting System
> like font face, font size, horizontal and vertical element positioning and line spacing, etc.
May I recommend ConTeXt?
For my purposes, KeenType was only meant to provide a real-time "rough draft" of equations rendered inside of KeenWrite[0], my FOSS Markdown editor. That is, I edit in Markdown, then KeenWrite converts the inline TeX-based equations for previewing. When I'm ready to create a "finished" product, KeenWrite exports the Markdown to XHTML then feeds the XHTML, along with a theme, to ConTeXt[1]. The various themes[2] are where font faces sizes, alignment, kerning, etc. are tweaked. In this way content remains completely separated from presentation.
[0]: https://github.com/DaveJarvis/keenwrite
[1]: https://wiki.contextgarden.net/Main_Page
[2]: https://github.com/DaveJarvis/keenwrite-themes
-
Architecture diagrams should be code
KeenWrite[0], the FOSS Markdown text editor I’ve been working on, includes the ability to render plain text diagrams via Kroki[1]†. See the screenshots[2] for examples. Here’s a sample Markdown document that was typeset[3] using ConTeXt[4] (and an early version of the Solare[5] theme).
One reason I developed KeenWrite was to use variables inside of plain text diagrams. In the genealogy diagram, when any character name (that’s within the diagram) is updated, the diagram regenerates automatically. (The variables are defined in an external YAML file, allowing for integration with build pipelines.)
Version 3.x containerizes the typesetting system, which greatly simplifies the installation instructions that allow typesetting Markdown into PDF files. It also opens the door to moving Kroki into the container so that diagram descriptions aren’t pushed over the Internet to be rendered.
†Kroki, ergo KeenWrite, supports BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), Ditaa, Erd, Excalidraw, GraphViz, Nomnoml, Pikchr, PlantUML, Structurizr, SvgBob, UMLet, Vega, Vega-Lite, and WaveDrom.
Note that Mermaid diagrams generate non-conforming SVG[6], so they don’t render outside of web browsers. There is work being done to address[7] this problem.
[0]: https://github.com/DaveJarvis/keenwrite
[1]: https://kroki.io/
[2]: https://github.com/DaveJarvis/keenwrite/blob/main/docs/scree...
[3]: https://pdfhost.io/v/4FeAGGasj_SepiSolar_Highlevel_Software_...
[4]: https://wiki.contextgarden.net/Main_Page
[5]: https://github.com/DaveJarvis/keenwrite-themes/
[6]: https://github.com/mermaid-js/mermaid/issues/2485
[7]: https://github.com/yuzutech/kroki/issues/1410
-
Is it possible to add LaTeX commands to a markdown file?
KeenWrite leverages KeenWrite Themes to change how documents are presented. The Tarmes theme is an example of a very basic theme, meant to act as a base for making new themes. Take a look at Tarmes, which is probably the closest answer to your question. Feel free to add issues against the issue tracker or add questions to the discussion area.
-
Converting my PhD thesis into HTML
> Nevertheless, I would prefer a Markdown-based system
My free, cross-platform desktop Markdown editor, KeenWrite[1], integrates with the ConTeXt typesetting software[2]. I'm working on a branch[3] to make integration containerized[3] because its installation is painful. KeenWrite limits math to plain TeX[4] so that the output can be rendered using any TeX-based typesetter (ConTeXt, LaTeX, MathJax, εχTEX, etc.).
Here's a sample document typeset using ConTeXt (skip to page 40 for the math):
https://pdfhost.io/v/4FeAGGasj_SepiSolar_Highlevel_Software_...
That document theme is called Solare[8].
> that can use CSS and MathML
Adding CSS mixes presentation logic with content, which is something KeenWrite strives to avoid. Instead, KeenWrite implements Pandoc's annotation syntax to keep presentation logic out of the content. I've written about this extensively in my Typesetting Markdown series[5].
You can produce some pretty amazing documents just with annotations, such as the following that I wrote in Markdown and typeset using ConTeXt:
https://impacts.to/downloads/lowres/impacts.pdf
> has a 100% bibtex clone for references.
Markdown fails at references. At some point, I'd like to implement cross-references in KeenWrite. Except there's at least six competing standards for the syntax, which I've also remarked upon[6], making the choice of syntax difficult[7].
[1]: https://github.com/DaveJarvis/keenwrite
[2]: https://wiki.contextgarden.net/Installation
[3]: https://github.com/DaveJarvis/keenwrite/blob/1_typeset_using...
[4]: https://github.com/DaveJarvis/keenwrite/blob/main/docs/scree...
[5]: https://dave.autonoma.ca/blog/2020/04/28/typesetting-markdow...
[6]: https://talk.commonmark.org/t/cross-references-and-citations...
[7]: https://xkcd.com/927/
[8]: https://github.com/DaveJarvis/keenwrite-themes/tree/main/sol...
-
KeenWrite 2.10.0: R meets TeX
If ConTeXt and KeenWrite Themes are installed, then you can press Control+P to export as a PDF file, producing the output shown on the far right.
What are some alternatives?
pagedown - Paginate the HTML Output of R Markdown with CSS for Print
TALA - A diagram layout engine designed specifically for software architecture diagrams