An Interest In:
Web News this Week
- April 2, 2024
- April 1, 2024
- March 31, 2024
- March 30, 2024
- March 29, 2024
- March 28, 2024
- March 27, 2024
The Happenings with TexCreate v3
The latest TexCreate version is v2.2.1 and that was released over 9 months ago. So considering that the transition from TexCreate v1 to 2 was a few months of development, why is this taking so long?
A Focus on Template Modularity
The known flaw I had with the current version with TexCreate is "hard coding" the templates inside the application. For those unaware, TexCreate is a LaTeX project manager that utilizes prebuilt templates to build projects for various needs. In v2 I transitioned to using a native Rust library tex-rs
to build the LaTeX code, but the library wasn't modular itself.
So what do we do? My first focus was building a library I can expand, and that's where the development with texcore
started. After 6 months of development, it is what I consider ready for TexCreate, the latest version at the time of writing is v0.4.10
. The library can be found in crates.io. The interesting new feature in v0.4
is the TexCreate Template feature which provides the template
module with the following type:
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, PartialOrd)]pub struct Template { pub name: String, pub description: String, pub version: Version, element_list: RefCell<ElementList<Any>>,}
Custom Templates?
At the current moment I plan to only have the application use first-party templates I develop, but there are plans to add functionality for custom templates.
How would that work? Well when TexCreate is initialized it will create a directory in $HOME/.texcreate
. The current plan is to keep all templates JSON files there, but what can happen is that inside of the .texcreate
directory we may have the following structure:
.texcreate/ mkproj/ Basic.json custom/ Foo.json
A sample Template may look like the following:
{ "name": "Basic", "description": "This is a basic LaTeX document", "version": { "major": 1, "minor": 0, "patch": 0 }, "element_list": { "metadata": { "author": "author", "date": "date", "title": "title", "fontsize": 11, "doc_class": "article", "maketitle": true }, "list": [ { "value": { "value": "\\pagenumbering{arabic}", "type_": "T_Custom", "level": "Document", "header_level": null, "text_type": null, "list_type": null, "items": null, "elements": null }, "type_": "T_Custom", "level": "Document" }, { "value": { "value": "\\newpage", "type_": "T_Custom", "level": "Document", "header_level": null, "text_type": null, "list_type": null, "items": null, "elements": null }, "type_": "T_Custom", "level": "Document" }, { "value": { "value": "amsmath", "type_": "T_Package", "level": null, "header_level": null, "text_type": null, "list_type": null, "items": null, "elements": null }, "type_": "T_Package", "level": "Packages" } ] }}
The following Template then would be processed and converted into the following TeX code:
\documentclass[11pt, letterpaper]{article}itle{title}\author{author}\date{date}\usepackage{amsmath}\begin{document}\maketitle\pagenumbering{arabic}
ewpage\end{document}
What's Happening Now...
Currently I am developing texcreate-services
which aims to be a suite of applications to manage the templates for TexCreate. This part of the project may not be opensource because it could become a vulnerability to the project and considering its the core function I rather not have that risk. However, I plan to write an application that would help developers create their own custom templates once that functionality is enabled.
This project has a lot of improvements and with that comes a lot of testing and development time. Considering how I always manage to be busy, I suspect that a stable version may be released until sometime in 2024.
Original Link: https://dev.to/mustafif/the-happenings-with-texcreate-v3-3d9j
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To