我想创建图表。最好使用 LaTeX。通常,我使用 PlantUML 语言。
答案1
可以在 LaTeX 中直接使用 PlantUML 语言植物包裹。
这是一个简单的例子:
\documentclass{scrartcl}
\usepackage{plantuml}
\begin{document}
\begin{plantuml}
@startuml
Alice -> Bob: Hello
Alice <- Bob: Hi!
@enduml
\end{plantuml}
\end{document}
要使用 PlantUML 构建 LaTeX,PLANTUML_JAR
必须设置环境变量并安装 Java。
要构建此文档,请运行lualatex --shell-escape documentname
结果应如下所示:
更详细的示例请参见此处:https://koppor.github.io/plantuml/
先决条件
# to get tikz, install pgf
tlmgr install pgf
tlmgr install koma-script
tlmgr install xkeyval
tlmgr install adjustbox
tlmgr install collectbox
tlmgr install luacode
tlmgr install luatexbase
答案2
我使用网站https://www.planttext.com/导出/下载为 SVG(顺便说一下,其中包含 plantuml 代码作为 XML 注释),然后使用以下方式保存为 PDF墨景.这可以与\includegraphics
答案3
您还可以编写植物本地图表并通过无损文件将其转换plantuml -teps your-file
为无损eps
文件。这些可以通过\includegraphics
命令直接包含在 latex 中。
这样,您就不必通过 inkscape 来走这条路了。
答案4
我已经想出了一个pdflatex
同样适用的解决方案。它可以生成矢量图形。我用 Ubuntu Linux 20.04 LTS 和 TeX Live 测试了它。应该也可以与 macOS 兼容。
我的代码要求您已安装:
- PlantUML(因此也是 Java)
- Inkscape(将 svg 转换为 pdf)
由于调用外部命令,您必须使用该-shell-escape
选项进行编译:
pdflatex -shell-escape my-file.tex
根据您安装 PlantUML 的方式,您可能必须像这样调用它:
\immediate\write18{java -jar /home/NAME/Downloads/plantuml.jar -tsvg #1.txt}
... 代替 ...
\immediate\write18{plantuml -tsvg #1.txt}
以下是作为最小示例的完整代码:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx} % enables us to use graphics
\usepackage{fancyvrb} % enables us to write to disk
\usepackage{float} % enables us to use [H] for figures
% Define an verbatim environment for PlantUML:
\newenvironment{plantuml}[1]{\VerbatimOut{#1.txt}}{\endVerbatimOut}
% Process a PlantUML code:
\newcommand{\process}[3]{%
% Call PlantUML to produce a svg vector graphcis:
\immediate\write18{plantuml -tsvg #1.txt}
% Call Inkscape to convert the svg to a pdf (pdflatex cannot use svg):
\immediate\write18{inkscape #1.svg --export-filename=#1.pdf}
% Include the pdf:
\begin{figure}[H]
\includegraphics[width=#2]{#1.pdf}
\caption{#3}
\end{figure}
% Remove all intermediate files:
\immediate\write18{rm #1.txt #1.svg #1.pdf}
}
\begin{document}
% Note: timeline1 gets used as filename.
% You must re-use this name for the
% corresponding \process command!
\begin{plantuml}{timeline1}
@startgantt
[Prototype design] lasts 15 days
[Test prototype] lasts 10 days
@endgantt
\end{plantuml}
\process{timeline1}{0.8\textwidth}{The proposed timeline.}
\begin{plantuml}{activity1}
@startuml
:Hello world;
:This is on defined on
several **lines**;
@enduml
\end{plantuml}
\process{activity1}{5cm}{An activity diagram.}
\end{document}
我希望这对某人有帮助。