[JAVA] Bibliothèque Kinx - Formatage automatique (Tiny Tyesetting)

introduction

** "Ressemble à JavaScript, le cerveau (contenu) est Ruby, (la stabilité est AC / DC)" ** Langage de script Kinx ). Cette fois, ce sont les dernières informations sur le paramètre Tiny Type. Ceci est une continuation de ** this **.

Cocontokoro, je faisais beaucoup ça. Oui. Maintenant que je peux faire ce que je voulais faire en premier, je vais le publier.

Il s'appelle KiTTy et peut donc être utilisé comme une fonction unique plutôt que comme une bibliothèque (à ce stade). Nous avons également des commandes d'exécution kxkitty.exe (Windows) et kxkitty (Linux).

Pour le moment, j'ai fait un manuel avec Essa Hoisa, donc veuillez vous y référer. Le manuel lui-même est écrit en KiTTy (il était difficile de faire à la fois du japonais et de l'anglais ...). Le japonais et l'anglais sont répertoriés ici. Je ne suis pas très confiant car j'ai donné la priorité à la fin de l'anglais à peu près.

Ceci est le fichier original.

Le traitement KiTTy donne: Je ne suis pas sûr, mais je publierai également la version anglaise.

Que diriez-vous?

Au fait, la vitesse de traitement est lente jusqu'à présent, mais je peux personnellement la supporter (je pense que c'est une faveur parce que je suis un enfant). J'ai quelques idées d'amélioration qui pourraient améliorer la vitesse d'exécution, mais je n'ai pas de temps à perdre, donc ça restera comme ça pendant un moment. Je tiens à m'excuser à l'avance afin de pouvoir vous pardonner. Je suis désolé.

Informations techniques etc. utilisées

Liste des fonctions prises en charge

Comme mentionné dans le manuel, KiTTy prend en charge les fonctions suivantes en tant que fonction de formatage. Le crénage n'est actuellement pas pris en charge. Je vous serais reconnaissant de bien vouloir lire le manuel pour plus de détails.

Certaines fonctions de formatage japonais sont également prises en charge. Rubi se balance également. L'écriture verticale n'est pas prise en charge.

Principales informations techniques individuelles

C'est un blog technique, je vais donc vous donner quelques informations techniques.

Knuth-Plass Line Breaking Algorithm

L'algorithme de division de ligne utilisé dans LaTeX. Après la coupure des mots, insérez la colle et la pénalité dans les unités individuelles et contrôlez pour casser à la position où la pénalité est minimisée.

Pour plus de détails techniques, les informations suivantes peuvent être utiles en japonais.

De plus, l'implémentation a été utilisée en modifiant ce qui suit (Licence BSD-2-Clause). ** Cela ressemble à du JavaScript **.

Formule

Si vous visez LaTeX (mais pas), vous avez besoin d'une formule. Donc, comme il y a KaTeX et MathJax en JavaScript, j'ai essayé de profiter des fonctionnalités de JavaScript ** ici aussi, mais les détails (polices et CSS sont nécessaires) sont trop différents ** Je ne peux pas. était**. Donc, ici je l'ai implémenté avec ** Duktape + KaTeX **. ** Mais, cependant, il a trébuché sur le rendu ** et finalement imagé basé sur ** Phantomjs **. Je me demande si Duktape était nécessaire, mais comme Duktape peut être utilisé ailleurs, j'ai décidé de rester tel quel (je n'ai pas eu beaucoup de temps pour le réparer).

À ce stade, il y a des voix qui disent que ** Phantomjs est subtil **, mais ça marche, donc ça va. Je pense que c'est correct de le fermer dans la bibliothèque car cela peut être fait avec une seule commande sans utiliser node.js ou Chrome, mais il y a des informations qui disent "Oui (on a l'impression de fermer avec une seule commande)" par d'autres moyens. Veuillez l'avoir.

Chart.js

** Avec Phantomjs intégré **, j'ai d'abord essayé de faire diverses choses et cela a fonctionné. Je trouve très pratique de tracer librement dans le document. Ou plutôt, c'est pratique.

Au fait, j'ai essayé d'incorporer Mermaid.js avec facilité et j'ai échoué (j'espère pouvoir écrire UML). Je pourrais réessayer bientôt.

Autre

Il semble y avoir diverses autres choses que je peux présenter, mais en raison des contraintes de temps, c'est tout pour aujourd'hui.

Comment installer

La méthode d'installation est également décrite dans le manuel, mais je vais la présenter. L'original est Markdown, il ressemble donc à une copie de base (bien qu'il ait besoin de quelques modifications).

L'installation comprend deux étapes:

  1. Installez Kinx
  2. Installation des modules supplémentaires KiTTy

À propos, le module de base Kinx fait environ 8,5 à 9 Mo, mais le module supplémentaire KiTTy fait environ 74 Mo (polices comprises). Vous pouvez le voir en regardant Assets à ** here (release page) **. Créer un gestionnaire de paquets est difficile, j'ai donc cherché un moyen de garder tout hors du cœur. Je voudrais préparer un gestionnaire de paquet équivalent dans le futur, mais pour l'instant cette méthode.

Linux

Sous Linux, téléchargez le module comme suit: v0.15.2 est la version officiellement ajoutée de la bibliothèque KiTTy. Veuillez réécrire lorsque vous utilisez la dernière version. Créez un répertoire de travail et déplacez-le.

$ mkdir temp
$ cd temp

Commencez par télécharger et décompresser le module kinx, puis Ensuite, téléchargez et décompressez le package KiTTy.

$ curl -L \
    https://github.com/Kray-G/kinx/releases/download/v0.15.2/package_linux-amd64.tar.gz \
    --output package_linux-amd64.tar.gz
$ tar -xvf package_linux-amd64.tar.gz
$ curl -L \
    https://github.com/Kray-G/kinx/releases/download/v0.15.2/package_kitty.zip \
    --output package_kitty.zip
$ unzip package_kitty.zip

Lorsque vous le décompressez, un dossier avec le numéro de version sera créé. Allez et exécutez la commande ʻinstall.sh`.

$ cd v0.15.2
$ sudo ./install.sh

Ceci termine l'installation. Vérifions la position de l'exécution fill [^ exe].

$ which kxkitty
/usr/bin/kxkitty

[^ exe]: Le manuel recherche l'emplacement de kinx. Devrait être ici. Je vais le réparer bientôt.

Windows

Sous Windows, téléchargez les derniers packages (2 ci-dessous) à partir de la page Release (https://github.com/Kray-G/kinx/releases).

Extrayez chacun d'eux et copiez le contenu de package_kitty.zip dans le dossier lib [^ winbuild].

À ce moment-là, assurez-vous que les dossiers fonts et phantomjs sont placés sous lib. La structure du fichier dans le fichier compressé peut ne pas toujours être le cas.

[^ winbuild]: Nous n'avons pas de programme d'installation pour le moment, mais nous prévoyons d'avoir un programme d'installation Windows dans le futur.

Construire

Normalement, vous n'avez pas besoin de le faire depuis build. Un module d'exécution déjà construit est fourni, et vous pouvez utiliser ce système en l'installant selon la procédure. Si vous osez exécuter à partir de la construction, vous pouvez exécuter la construction par la procédure suivante.

Linux

Clonez depuis Github et créez.

$ git clone https://github.com/Kray-G/kinx.git
$ cd kinx
$ make

Installez-le.

$ git clone https://github.com/Kray-G/kinx.git
$ cd kinx
$ sudo make install
$ sudo make kitty-install

Windows

Clonez depuis Github et créez.

$ git clone https://github.com/Kray-G/kinx.git
$ cd kinx
$ make.cmd

En particulier, nous n'avons pas actuellement de commande pour l'installation, Il peut être utilisé dans l'environnement bâti. Veuillez l'utiliser dans l'environnement construit.

hello, world

Créez le document suivant et enregistrez-le en tant que fichier helloworld.md.

% Hello Kinx Tiny Typesetting
% Your name
% October 7, 2020

<param style="ArticleA4"/>

# Greeting
hello, world

En exécutant la commande kxkitty comme indiqué ci-dessous, helloworld.pdf est créé.

$ kxkitty helloworld.md

Actuellement, il est nécessaire de décrire un échantillon, Nous prévoyons de l'améliorer afin de pouvoir présenter un échantillon un peu plus simple.

en conclusion

Si vous pensez "OK, n'est-ce pas?", Je serais heureux si vous pouviez me donner une étoile GitHub (même si je dis toujours la même chose). Nous remercions également toutes les personnes qui nous ont soutenus jusqu'à présent **. La mise à jour a été un peu tardive, mais j'aimerais procéder petit à petit, donc je vous serais très reconnaissant si vous pouviez faire un problème ou une demande d'extraction sur GitHub.

Merci pour votre soutien continu.

Recommended Posts

Bibliothèque Kinx - Formatage automatique (Tiny Tyesetting)
Kinx Tiny Compositionetting - La faction LaTeX? Le savez-vous?