VOOZH about

URL: https://asciidocfx.com/

⇱ Asciidoc Book Editor based on JavaFX 19


Asciidoc Book Editor based on JavaFX 19

👁 Backers on Open Collective
👁 Sponsors on Open Collective
👁 Build Status
👁 Gitter

Asciidoc FX is a book / document editor to build PDF, Epub, Mobi and HTML books, documents and slides. AsciidocFX is also a winner of Duke’s Choice Award 2015.

Figure 1. AsciidocFX - Duke’s Choice Award 2015 winner

Features

  • Real-Time Preview

  • Multi-platform (Windows, Mac, Linux)

  • Creating Asciidoc Books

  • Creating PDF, HTML, Epub, Mobi, Docbook

  • Epub Viewer

  • External Browser Support

  • Table Generator

  • MathJax Extension

  • PlantUML Extension

  • Mermaid Extension (Experimental)

  • ditaa Extension

  • Filesystem Tree Extension

  • JavaFX Charts Extension

  • Source Code Highlighter

  • Reveal.js Converter

  • Deck.js Converter

  • Nashorn support

  • Pseudo Terminal Emulator

  • Themeing (Dark & White) _New _

Pseudo Terminal Emulator

How to Install AsciidocFX

There are a number of operating systems that AsciidocFX supports.

Note
The latest releases are available from the Github releases page.

Supported Operating Systems and Builds shows the list of available builds with links for reference. If you are looking for the very latest version, visit the link in the note above to be guaranteed of downloading the latest and greatest version of AsciidocFX.

Note
Thanks 👁 install4j small
for providing us open source license for the installers used in AsciidocFX distribution.
Note
In all releases we use AdoptOpenJDK JREs, so you will not have any licensing issue regarding bundled JRE.
Table 1. Supported Operating Systems and Builds
OS Filename

Mac

AsciidocFX_Mac.dmg

Mac M1

AsciidocFX_Mac_M1.dmg

Windows

AsciidocFX_Windows.exe

Windows

AsciidocFX_Windows.zip

Linux

AsciidocFX_Linux.tar.gz

Linux DEB

AsciidocFX_Linux.deb

Linux RPM

AsciidocFX_Linux.rpm

Install on Linux

You can install AsciidocFX through the Deb or Rpm installers or via Archive file.

Archive file
$ tar –xvzf AsciidocFX_Linux.tar.gz
$ cd AsciidocFX/bin
$ ./AsciidocFX

Install on Windows

Download executable/installer and run it.

Install on Mac

Download the .dmg and run it.

or

Use Homebrew to install it with one command: brew install --cask asciidocfx

A Quick Dive

Video - Writing Books with Asciidoc FX

AsciidocFX Backends

AsciidocFX can converts Asciidoc documents into HTML, PDF, EPUB3 and DOCBOOK5.

AsciidocFX converts documents via AsciidoctorJ library. For the PDF backends alternatively Docbook → Fop → PDF conversion can be utilized.

AsciidocFX Extensions

AsciidocFX supports many extensions like PlantUML, Ditaa, Charts, File Trees and many others Asciidoctor Diagram which can be found in https://docs.asciidoctor.org/diagram-extension/latest/

PlantUML Extension

You can fulfill your UML needs with AsciidocFX. It supports PlantUML. AsciidocFX converts this textual UML elements as png or svg image.

PlantUML is a component that allows to quickly write :

  • Sequence diagram,

  • Usecase diagram,

  • Class diagram,

  • Activity diagram, (here is the new syntax),

  • Component diagram,

  • State diagram,

  • Object diagram.

  • wireframe graphical interface

.UML Diagram Example
[plantuml,target="uml-example"]
--
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection

List <|-- AbstractList
Collection <|-- AbstractCollection

Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList

class ArrayList {
 Object[] elementData
 size()
}

enum TimeUnit {
 DAYS
 HOURS
 MINUTES
}

annotation SuppressWarnings
--
Figure 2. UML example output
Note
In some UML elements, PlantUML needs to work with Graphviz. Because of this, you should install Graphviz manually for your platform. After installing Graphviz, you should set GRAPHVIZ_DOT environment variable to dot executable in Graphviz.

Mermaid Extension

Mermaid lets you create diagrams using text and code. This simplifies the maintenance of complex diagrams. See more examples: https://mermaid-js.github.io/

Note

mermaid-cli has to be installed for mermaid diagrams generation.

npm install @mermaid-js/mermaid-cli
[mermaid,target="mermaid-graph"]
--
graph TD
 A[Start] --> B{Is it?};
 B -- Yes --> C[OK];
 C --> D[Rethink];
 D --> B;
 B -- No ----> E[End];
--
[mermaid,target="mermaid-flowchart"]
--
flowchart TB
 c1-->a2
 subgraph one
 a1-->a2
 end
 subgraph two
 b1-->b2
 end
 subgraph three
 c1-->c2
 end
 one --> two
 three --> two
 two --> c2
--

ditaa Extension

AsciidocFX supports ditaa diagrams.

ditaa is a component that converts diagrams drawn in ascii art to bitmap graphics.

.ditaa Diagram Example
[ditaa,target="ditaa-example"]
--
 +--------+ +-------+ +-------+
 | |---+ ditaa +--->| |
 | Text | +-------+ |diagram|
 |Document| |!magic!| | |
 | {d}| | | | |
 +---+----+ +-------+ +-------+
 : ^
 | Lots of work |
 +-------------------------+
--

MathJax Extension

MathJax is an open source JavaScript display engine for mathematics that works in all browsers.

You can use Tex or MathML languages for describing mathematical formulas in AsciidocFX. AsciidocFX converts this textual formulas as png or svg image.

For Example (Tex)
[latexmath_,target="tex-formula"]
--
\begin{align}
\dot{x} & = \sigma(y-x) \\
\dot{y} & = \rho x - y - xz \\
\dot{z} & = -\beta z + xyp
\end{align}
--

Tex output

For Example (MathML)
[mathml_,target="mathml-formula"]
--
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
 <mi>x</mi>
 <mo>=</mo>
 <mrow>
 <mfrac>
 <mrow>
 <mo>&#x2212;</mo>
 <mi>b</mi>
 <mo>&#xB1;</mo>
 <msqrt>
 <msup>
 <mi>b</mi>
 <mn>2</mn>
 </msup>
 <mo>&#x2212;</mo>
 <mn>4</mn>
 <mi>a</mi>
 <mi>c</mi>
 </msqrt>
 </mrow>
 <mrow>
 <mn>2</mn>
 <mi>a</mi>
 </mrow>
 </mfrac>
 </mrow>
 <mtext>.</mtext>
</math>
--

MathML output

Filesystem Tree Extension

You can represent filesystem tree in following tree block. There is two style of FS tree.

[tree,target="tree-view"]
--
#src
##main
###java
####com
#####kodcu
######App.java
###resources
####css
#####style.css
####js
#####script.js
####images
#####image.png
--

Filesystem Tree output

When you drag and drop a folder to editor, AFX will generate this like tree automatically.

[tree,target="tree-view-new"]
--
root
|-- photos
| |-- camp.gif
| |-- festival.png
| `-- balloon.jpg
|-- videos
| |-- car-video.avi
| |-- dance.mp4
| |-- dance01.mpg
| |-- another video.divx
| `-- school videos
| `-- firstday.flv
|-- documents
| |-- jsfile.js
| |-- powerpoint.ppt
| |-- chapter-01.asc
| |-- archive-db.zip
| |-- .gitignore
| |-- README
| `-- configuration.conf
`-- etc.
--

Filesystem Tree output (new)

JavaFX Charts Extension

JavaFX has 8 kind of Chart component and AsciidocFX supports all of them.

Pie Chart

[chart,pie,target="secim-2014-pie",opt="title=2014 YEREL SEÇİM SONUÇLARI"]
--
AKP, 45.6, orange
CHP, 27.8,red
MHP, 15.2
BDP, 4.2
SP, 2
--

Area Chart

[chart,area,target="area-chart"]
--
//April
1, 4
3, 10
6, 15
9, 8
12, 5

//May
1, 20
3, 15
6, 13
9, 12
12, 14
--

For other charts and available options, look at Chart extension wiki page!

How to Build AsciidocFX

  1. Firstly, install JDK 17

  2. Download Apache Maven and set /bin directory to environment variables

  3. Enter AsciidocFX directory and run $ mvn clean install

  4. Follow to target/appassembler/bin directory and you will see asciidocfx.sh and asciidocfx.bat

Note
We are generating builds with Github Actions automatically.

Books Written with AsciidocFX

Java 8 Ebook
AspectJ Ebook
Mastering Cloudforms Automation

Slides (Reveal.js)

AsciidocFX supports slides by using the Asciidoctor Reveal.js backend. To getting start with slide authoring, you can just follow New  Slide menu.

Figure 3. New  Slide

After that AFX will prompt you a freespace directory name and "OK" you will see the slide demo.

Figure 4. Slide demo

You can easily switch between reveal.js and deck.js by changing the comment below. Also, you can configure default settings by editing _settings_reveal.adoc and include::_settings_deck.adoc.

include::_settings_reveal.adoc[]

Used Technologies

AsciidocFX uses Java, JavaScript and XML related technologies.

  • Java FX 18

  • AsciidoctorJ

  • Asciidoctor.js (Deprecated)

  • Spring Boot

  • Spring WebSocket

  • Docbook

  • Apache Fop

  • Saxon 6.5

  • Ace editor

AsciidocFX Configuration

You can configurate AsciidocFX with Settings page (Press +). The all configs located in [Install_Dir]/conf folder.

Some Shortcuts

AFX supports this ace shortcuts https://github.com/ajaxorg/ace/wiki/Default-Keyboard-Shortcuts and custom shortcuts listed below . If you suggest us any shortcut request, we can implement it.

Shortcut Detail

+

Show settings

+

Converts and pastes selection

++

Pastes selection

+

Generates asciidoc table (x=row,y=column)

+

Generates asciidoc table (x=row,y=column)

+

Generates asciidoc source block (default lang: java)

+

Generates asciidoc source block by lang

+

Generates asciidoc source block by lang

+

Generates image section

+

Generates book header section

+

Generates article header section

+

Generates UML block

+

Generates Math block

+

Generates Tree block

+

Generates Quote block

+

Bolds selection

+

Find Text

+ , +

Find and Replace Text

+

Italices selection

+

Underlines selection

+

Highlights selection

+

Duplicates selection

+

Displays line numbers

+

Removes current line

+

Creates new empty doc

+

Maximizes the tab pane

+

Saves current doc

+

Saves and closes current doc

++

Surrounds backtick `` selection

+

Zoom in

+

Zoom out

Opens Firebug Lite (Requires Internet Connection)

Known Issues

PDF output shows all text as ####

On Linux platforms you can face with this issue. For the getting around for the issue you need to install Microsoft Core Fonts to your platform. How to install [microsoft-core-fonts]

Mac QWERTY Keyboard Bug

There is a bug in JavaFX which makes all keyboards on a Mac behave as "QWERTY". This means, that on a German "QWERTZ" layout the shortcuts for undo and redo are swapped.

Text Artifacts (Rainbowing) on Text

If you are being distracted by rainbow text artifacts on text, you can work around the issue by passing some VM options in [Install_Dir]/AsciidocFX.vmoptions, as shared in this RichTextFX bug.

  1. Open AsciidocFX.vmoptions.

  2. Add -Dprism.text=t2k and -Dprism.lcdtext=false to the file.

  3. Save and close.

  4. Launch AsciidocFX

Changelog

To see what has changed in recent versions of AsciidocFX, see the CHANGELOG

Support

Support AsciidocFX with pull requests or open an issue for bug & feature requests. You can make discussions in mail group or in the chat room at Gitter.im.

Contributors

Thank you to all the people who have already contributed to AsciidocFX! 👁 Contributors

Backers

Thank you to all our backers! [Become a backer]

👁 Backers on Open Collective

Sponsors

Thank you to all our sponsors! (please ask your company to also support this open source project by becoming a sponsor)

👁 avatar
👁 avatar
👁 avatar
👁 avatar
👁 avatar
👁 avatar
👁 avatar
👁 avatar
👁 avatar
👁 avatar

Last updated 2023-01-11 13:09:43 +0100