TeX (LaTeX) 文档中的 Ditaa 图表

TeX (LaTeX) 文档中的 Ditaa 图表

我想制作 AsciiArt 风格的图表。

我发现迪塔工具非常有用。我很高兴发现,Eps 输出插件

您建议以最简单但又清晰优雅的方式(遵循 KISS 原则)来

  • 将 ditaa 图表嵌入到 Tex(LaTeX)文档中?

制作带有 eps->pdf 转换的 Makefile,然后包含此类 pdf。保持 asciiart 图表分离或以某种方式将其与 Tex/LaTex 集成(对于 asciidoc,我发现这很容易)。

我知道这更多的是高级用户的问题,但相关:

  • 不幸的是,我无法弄清楚如何使其与最新的 ditaa 0.9 一起工作(它与 ditaa 0.6b 一起分发)

我是小组新人,因此如果问题不合适,请原谅(请提醒,我可以删除它)。

我是Linux程序员,所以命令行,make,sed,awk和其他工具可以组合。

答案1

如果您仅对在文档中添加 ascii-art 图表感兴趣,则可以在 verbatim 环境中转储 ascii-art 内容:

\documentclass{minimal}
​\begin{document}% Taken from http://ditaa.sourceforge.net/
\begin{verbatim}
    +--------+   +-------+    +-------+
    |        | --+ ditaa +--> |       |
    |  Text  |   +-------+    |diagram|
    |Document|   |!magic!|    |       |
    |     {d}|   |       |    |       |
    +---+----+   +-------+    +-------+
        :                         ^
        |       Lots of work      |
        +-------------------------+
​\end{verbatim}
\end{document}​​​​​​

逐字环境使用字体按原样排版其内容\ttfamily,保持对齐(空格)。

ditaa ascii-art 代码示例

如果你对转换后的图形/图像感兴趣(ditaa-处理如果您的 ascii-art 版本是 PNG(或 JPG/BMP),那么从 ditaa 输出导入 PNG(或 JPG/BMP)将是最容易的。然而,这会导致输出质量下降。如果 EPS 插件随时可用,那么使用它来生成 EPS 图像(甚至转换为 PDF)将获得最高质量。以下是网站上的一张图表,说明了使用以下插件时的质量差异光栅化对比向量图形:

ditaa 输出中栅格化图形和矢量图形的区别

最后,TikZ/PGFPStricks两者都在 (La)TeX 中提供了丰富的原生绘图功能。TikZ/PGF文档充满了例子,就像许多与以下软件包相关的文档PStricks。它们各自带有一组自己的宏/命令,允许绘制类似于 的图表ditaa

与某些外部应用程序(如)相比,使用本机软件包的优势ditaa在于它提供了在 (La)TeX 代码中更改“图像”的能力,而不是使用外部应用程序作为垫脚石。此外,由于 (La)TeX 独立于平台,本机编程的这些优势增加了更多价值。

答案2

如果您是emacs用户,您可以考虑使用org-mode扩展:http://orgmode.org/

我一直使用org-modeLaTeX/Beamer 来准备文档和演示文稿。您可以使用org-mode它来生成 LaTeX 文件和 html 文件。

要合并其他语言(例如 Python、Ruby、C++、ditaa、tikz 等)的代码,您需要使用以下功能babelhttp://orgmode.org/worg/org-contrib/babel/
尤其,这里,是org-mode来自扩展的一个 ditaa 示例babel

答案3

我想要的正是这个问题所要求的功能。我想在我的 latex 文件中嵌入 ditaa asciiart,同时只需执行一次 pdflatex 即可嵌入由 ditaa 渲染的图像。

由于我通过这篇文章意识到没有这样的东西,所以我创建了它并在这里分享它。 https://gist.github.com/dakusui/160dba81fb7dc53d24b3596ef21bd979

重要提示:您需要使用 --enable-write18 选项进行编译。重要提示:您需要ditaa事先安装命令。请尝试一下,希望您喜欢。

% Preamble
\documentclass[11pt]{article}

% Packages
\usepackage{a4wide}
\usepackage{environ}
\usepackage{fancyvrb}
\usepackage{graphicx}

\def\ImageResourcePath{./resources/graphics/}
\graphicspath{ {\ImageResourcePath} }

\newenvironment{ditaa}[2]
{
  \def\ditaacaption{#1}
  \def\ditaastem{#2}
  \def\ditaadir{\ImageResourcePath/ditaa2}
  \def\ditaafile{\ditaadir/\ditaastem.ditaa}
  \VerbatimOut{\ditaafile}}
{\endVerbatimOut
  \immediate\write18{ditaa "\ditaafile" "\ditaadir/\ditaastem.png"}
  \begin{figure}
      \caption{\ditaacaption}
      \includegraphics[width=\columnwidth]{ditaa2/\ditaastem}
  \end{figure}
}
%--------------------------------------------------

\begin{document}
    This is a ditaa diagramm example.
    \begin{ditaa}{ditaa caption example}{ditaaexample}
      +--------+   +-------+    +-------+
      |        | --+ ditaa +--> |       |
      |  Text  |   +-------+    |diagram|
      |Document|   |!magic!|    |       |
      |     {d}|   |       |    |       |
      +---+----+   +-------+    +-------+
          :                         ^
          |       Lots of work      |
          +-------------------------+
    \end{ditaa}
    Enjoy!
\end{document}

相关内容