KeenType
KeenWrite
KeenType | KeenWrite | |
---|---|---|
13 | 98 | |
104 | 621 | |
- | - | |
10.0 | 0.0 | |
8 months ago | 8 months ago | |
Java | Java | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
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.
KeenType
-
LaTeX3: Programming in LaTeX with Ease
> modern languages like Markdown
Markdown was created in 2004. From the creator:
> ... the single biggest source of inspiration for Markdown’s syntax is the format of plain text email.
Email goes back to 1965, though I suspect Markdown's influence stems from the more widely adopted email usage from the 1990s.
> Part of LaTeX's success was the absolutely beautiful documents it can make with nothing but a personal computer.
I'd say that was TeX's success, with LaTeX bolted on later to greatly improve TeX's extensibility. Keep in mind, there are a number of TeX-centric implementations beyond LaTeX. For example, my fork of NTS, called KeenType, is a pure Java version of TeX that can typeset beautifully and has at its core Knuth's original TeX files.
https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai...
-
Expanding TeX's \Newif (2021)
My port of the New Typesetting System (NTS), called KeenType, whittles down the Java-based implementation to a few of Knuth's files. Namely, "plain.tex" and "hyphen.tex":
https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai...
Getting familiar with the fonts required understanding the difference between font metrics (TFM files) and the fonts themselves. To make matters a little less straightforward, Knuth created a special character mapping for indexes into the fonts. It was not easy to find a font that mapped those glyphs exactly. The closest font was BaKoMa:
https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai...
This required hard-coding a mapping between Knuth's code points and the actual code points in the target font:
https://github.com/DaveJarvis/KeenType/blob/989dbe26f68eda75...
-
The fastest math typesetting library for the web
A while ago I optimized KeenType, which although not JavaScript-based, generates SVG images, which can be embedded into web pages.
https://github.com/DaveJarvis/keentype
The following tutorial shows the real-time rendering speed of KeenType within my text editor, KeenWrite:
https://youtu.be/vgyYXwwF_lc?list=PLB-WIt1cZYLm1MMx2FBG9KWzP...
- Reducing code size in (Rust) librsvg by removing an unnecessary generic struct
- KeenType: Pure Java typesetting system
-
Different algorithms for converting binary to decimal floating-point numbers
In Java, many number-to-string implementations use NumberFormat. This is abysmally slow if the problem domain doesn't require internationalization, which is the case for machine-readable file formats, such as SVG. When I performance tested JMathTeX for rendering TeX, the bottleneck for converting TeX into SVG elements was JFreeSVG's use of NumberFormat[0]. Replacing NumberFormat with RyuDouble doubled the throughput[1]. (Reusing a StringBuilder for to concatenate strings yielded another doubling.)
For KeenType[2], a fork of the New Typesetting System (and more complete TeX implementation than JMathTeX), I added an SVG generator that converts numbers to string using a StackOverflow answer[3], instead of using Ryu[4]. The performance was even better and the algorithm vastly simpler.
Knuth was right: measure, then optimize.
[0]: https://github.com/jfree/jfreesvg
[1]: https://github.com/jfree/jfreesvg/pull/30
[2]: https://github.com/DaveJarvis/KeenType
[3]: https://stackoverflow.com/a/10554128/59087
[4]: https://github.com/DaveJarvis/KeenType/blob/fef005579021f394...
-
KeenWrite 3.2.0
KeenType, a modernized and optimized NTS fork, replaces KeenTeX.
KeenWrite
-
Ask HN: Tell us about your project that's not done yet but you want feedback on
KeenWrite is my free, open-source, cross-platform desktop Markdown editor that can produce beautifully typeset PDFs. I started working on it years ago to help write a novel that has a complex timeline and I couldn't find a text editor that would allow me to integrate a character sheet with the story itself.
https://github.com/DaveJarvis/keenwrite
Tutorials:
* https://www.youtube.com/playlist?list=PLB-WIt1cZYLm1MMx2FBG9...
Here's what I mean by using variables directly:
* https://www.youtube.com/watch?v=CFCqe3A5dFg
CommonMark doesn't propose a standard for bibliographic references. Would anyone find the editor more appealing if it had cross-references and citations?
-
Documentation as Code for Cloud Using PlantUML
My cross-platform desktop text editor, KeenWrite, allows users to define variables in an external YAML file. The editor calls out to Kroki[1] to convert text-based diagrams to SVG. The diagrams can reference variables and are rendered using EchoSVG[2].
KeenWrite[3] can produce PDF documentation from Markdown documents that has PlantUML diagrams with elements stored in an external, machine-readable file. Here are screenshots showing variables on the left, diagram text in the middle, and a real-time render on the right:
* https://raw.githubusercontent.com/DaveJarvis/KeenWrite/main/...
* https://raw.githubusercontent.com/DaveJarvis/KeenWrite/main/...
KeenWrite supports all diagrams offered by Kroki, which includes "diagram-plantuml".
[1]: https://kroki.io/
[2]: https://github.com/css4j/echosvg/
[3]: https://github.com/DaveJarvis/keenwrite
- On why Markdown is not a good, or even a half-decent, markup language
- MdBook – Create book from Markdown files. Like Gitbook but implemented in Rust
- KeenWrite 3.3.2: MermaidJS diagrams (with caveat)
-
Interactive CommonMark Tutorial
Although not interactive, I've created a video series that shows advanced usage of Markdown. Namely R, external variables, diagrams, math, annotations, and a different approach to metadata:
* https://www.youtube.com/playlist?list=PLB-WIt1cZYLm1MMx2FBG9...
Tutorial 4 shows basic Markdown:
* https://www.youtube.com/watch?v=qNbGSiRzx-0
The top-right of each video shows keyboard and mouse clicks to help follow along.[1] My desktop text editor, KeenWrite[2], is used in the tutorials.
[1]: https://github.com/DaveJarvis/kmcaster
[2]: https://github.com/DaveJarvis/keenwrite
-
“Exit Traps” Can Make Your Bash Scripts Way More Robust and Reliable
https://github.com/DaveJarvis/keenwrite/blob/main/scripts/bu...
My template script provides a way to make user-friendly shell scripts. In a script that uses the template, you define the dependencies and their sources:
DEPENDENCIES=(
-
EchoSVG: SVG rasterizer library supporting level 4 selectors (Apache 2)
I didn't create the fork, nor am I affiliated with the project. I use it in my text editor, KeenWrite to rasterize SVG.
-
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...
What are some alternatives?
Sentinel - A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
markdown-preview.nvim - markdown preview plugin for (neo)vim
asciimathml - A new home for asciimathml
marktext - 📝A simple and elegant markdown editor, available for Linux, macOS and Windows.
awesome-typst - Awesome Typst Links
typst - A new markup-based typesetting system that is powerful and easy to learn.
latex-snippets - Vim + LaTeX snippets setup
vim-markdown - Markdown Vim Mode
KmCaster - Capture keyboard and mouse events for screencasting
Zettlr - Your One-Stop Publication Workbench
jfreesvg - A fast, lightweight Java library for creating Scalable Vector Graphics (SVG) output.
kroki - Creates diagrams from textual descriptions!