Multilingual Wiki Documentation

You are currently using syntax.
In an attempt to improve PlantUML documentation...
Please do not use this website for your own diagrams.
You can click here and use the online server here for your own documentation.

Wiki Toc    Recent changes    View page history    Add new chapter    Reorder page    Raw


数式

PlantUML では、 AsciiMathJLaTeXMath の構文が使用できます。

@startuml
:<math>int_0^1f(x)dx</math>;
:<math>x^2+y_1+z_12^34</math>;
note right
Try also
<math>d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h</math>
<latex>P(y|\mathbf{x}) \mbox{ or } f(\mathbf{x})+\epsilon</latex>
end note
@enduml

または

@startuml
Bob -> Alice : Can you solve: <math>ax^2+bx+c=0</math>
Alice --> Bob: <math>x = (-b+-sqrt(b^2-4ac))/(2a)</math>
@enduml

WARNING
 This translation need to be updated. 
WARNING

Maths

Within PlantUML, you can use AsciiMath notation:

@startuml
:<math>int_0^1f(x)dx</math>;
:<math>x^2+y_1+z_12^34</math>;
note right
Try also
<math>d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h</math>
<math>P(y|bb"x") or f(bb"x")+epsilon</math>
end note
@enduml

or JLaTeXMath notation:

@startuml
:<latex>\int_0^1f(x)dx</latex>;
:<latex>x^2+y_1+z_{12}^{34}</latex>;
note right
Try also
<latex>\dfrac{d}{dx}f(x)=\lim\limits_{h \to 0}\dfrac{f(x+h)-f(x)}{h}</latex>
<latex>P(y|\mathbf{x}) \mbox{ or } f(\mathbf{x})+\epsilon</latex>
end note
@enduml

Here is another example:

@startuml
Bob -> Alice : Can you solve: <math>ax^2+bx+c=0</math>
Alice --> Bob: <math>x = (-b+-sqrt(b^2-4ac))/(2a)</math>
@enduml

単体で使用する場合

AsciiMath で記述した式を単体で使用したい場合は、 @startmath@endmath を使用します。

@startmath
f(t)=(a_0)/2 + sum_(n=1)^ooa_ncos((npit)/L)+sum_(n=1)^oo b_n\ sin((npit)/L)
@endmath

また、 JLaTeXMath の場合は、 @startlatex@endlatex を使用します。

@startlatex
\sum_{i=0}^{n-1} (a_i + b_i^2)
@endlatex

Standalone diagram

You can also use @startmath/@endmath to create standalone AsciiMath formula.

@startmath
f(t)=(a_0)/2 + sum_(n=1)^ooa_ncos((npit)/L)+sum_(n=1)^oo b_n\ sin((npit)/L)
@endmath

Or use @startlatex/@endlatex to create standalone JLaTeXMath formula.

@startlatex
\sum_{i=0}^{n-1} (a_i + b_i^2)
@endlatex

どのように処理しているのか

これらの式を表示するのに、PlantUML では 2つの オープンソースプロジェクトを使用します。

  • AsciiMath : AsciiMath を LaTeX へ変換します。
  • JLatexMath LaTeX で書かれた式を表示します。JLaTeXMath は LaTeX のコードを表示するのに最適な Java のライブラリです。

ASCIIMathTeXImg.js は PlantUML の標準ディストリビューション で使用する上で十分に小さいです。(訳者注:そのため、別途インストールする必要はありません。)

PlantUMLは、JavaScriptエンジンを読み込んでJavaScriptコードを実行するために、Java Scripting API (特に、new ScriptEngineManager().getEngineByName("JavaScript");)に依存しています。Java 8にはNashornというJavaScriptエンジンが含まれていますが、これはJava 11で非推奨になりました。

Java 11でAsciiMathを使用する場合、次のような警告が表示されます:

Warning: Nashorn engine is planned to be removed from a future JDK release

NashornはJava 15で削除されました。 次の依存関係を設定すれば、GraalVM JavaScriptエンジンを代わりに使用することができます:

<dependency>
  <groupId>org.graalvm.js</groupId>
  <artifactId>js</artifactId>
  <version>20.2.0</version>
</dependency>
<dependency>
  <groupId>org.graalvm.js</groupId>
  <artifactId>js-scriptengine</artifactId>
  <version>20.2.0</version>
</dependency>

また、Java 11でGraalVM JavaScriptエンジンを使用することもでき、その場合、警告メッセージは表示されません。

JLatexMath は比較的大きいです。 ダウンロードページ からダウンロードし、4つの jar ファイル (batik-all-1.7.jar, jlatexmath-minimal-1.0.3.jar, jlm_cyrillic.jar and jlm_greek.jar) を PlantUML.jar と同じディレクトリに置く必要があります。

How is this working?

To draw those formulas, PlantUML uses two open source projects:

  • AsciiMath that converts AsciiMath notation to LaTeX expression;
  • JLatexMath that displays mathematical formulas written in LaTeX. JLaTeXMath is the best Java library to display LaTeX code.

ASCIIMathTeXImg.js is small enough to be integrated into PlantUML standard distribution.

PlantUML relies on the Java Scripting API (specifically: new ScriptEngineManager().getEngineByName("JavaScript");) to load a JavaScript engine and execute JavaScript code. Java 8 includes a JavaScript engine called Nashorn but it was deprecated in Java 11.

If you are using AsciiMath in Java 11 you see the following warnings:

Warning: Nashorn engine is planned to be removed from a future JDK release

Nashorn was removed in Java 15. Fortunately, you can use the GraalVM JavaScript Engine instead by adding the following dependencies:

<dependency>
  <groupId>org.graalvm.js</groupId>
  <artifactId>js</artifactId>
  <version>20.2.0</version>
</dependency>
<dependency>
  <groupId>org.graalvm.js</groupId>
  <artifactId>js-scriptengine</artifactId>
  <version>20.2.0</version>
</dependency>

You can even use the GraalVM JavaScript Engine in Java 11 to get rid of the warning messages.

Since JLatexMath is bigger, you have to download it separately, then unzip the 4 jar files (batik-all-1.7.jar, jlatexmath-minimal-1.0.3.jar, jlm_cyrillic.jar and jlm_greek.jar) in the same folder as PlantUML.jar.


Please report any bugs to plantuml@gmail.com or here.
This website is still in beta testing.