Skip to content

Instantly share code, notes, and snippets.

@dakusui
Last active October 8, 2018 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dakusui/160dba81fb7dc53d24b3596ef21bd979 to your computer and use it in GitHub Desktop.
Save dakusui/160dba81fb7dc53d24b3596ef21bd979 to your computer and use it in GitHub Desktop.
The "ditaa" environment
% 'ditaa' package
%
% (c) Hiroshi Ukai
%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ditaa}
[2018/09/27 v0.01 LaTeX package for embedding ditaa style ascii art]
\RequirePackage{fancyvrb}
\RequirePackage{graphicx}
\RequirePackage{kvoptions}
\DeclareStringOption[]{imagepath}
\ProcessKeyvalOptions*
%@formatter:off (This line indicates IntelliJ that formatter should be off before this)
\newenvironment{ditaa}[3][\columnwidth]
{
\def\ditaacaption{#2}
\def\ditaastem{#3}
\def\ditaadir{\ditaa@imagepath/ditaa}
\def\ditaafile{\ditaadir/\ditaastem.ditaa}
\def\ditaafigwidth{#1}
\VerbatimOut{\ditaafile}}
{\endVerbatimOut
\immediate\write18{ditaa -E "\ditaafile" "\ditaadir/\ditaastem.png"}
\begin{figure}[h]
\begin{center}
\includegraphics[width=\ditaafigwidth]{\ditaadir/\ditaastem.png}
\caption{\ditaacaption}
\end{center}
\label{fig:\ditaastem}
\end{figure}
}
%@formatter:on (This line indicates IntelliJ that formatter should be off before this)
%--------------------------------------------------
\endinput
%%
%% End of file `ditaa.sty'.
@dakusui
Copy link
Author

dakusui commented Sep 26, 2018

A full example

A complete example is as follows. Compile it with pdflatex --enable-write18 filename.tex.

% Preamble
\documentclass[11pt]{article}

% Packages
\usepackage{a4wide}
\def\imagepath{./resources/graphics}
\usepackage[imagepath=\imagepath]{ditaa}
\graphicspath{ {\imagepath/} }

\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!
    And you can even specify image width like this Figure.\ref{fig:ditaaexample2}.
     \begin{ditaa}[6cm]{ditaa caption example2}{ditaaexample2}
       +---------+
       | cBLU    |
       |         |
       |    +----+
       |    |cPNK|
       |    |    |
       +----+----+
    \end{ditaa}
\end{document}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment