emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nick Daly <nick+orgmode-org@despisinggravity.com>
To: emacs-orgmode@gnu.org
Subject: Re: [PATCH] ob-plantuml: Add PlantUML block post-processing.
Date: Tue, 13 Apr 2021 21:24:36 -0500	[thread overview]
Message-ID: <875z0p1u3f.fsf@europa> (raw)
In-Reply-To: <87r1jl35eo.fsf@europa>

[-- Attachment #1: Type: text/plain, Size: 782 bytes --]

Nick Daly writes:

> Please see the attached patch that allows for post-processing of
> PlantUML diagrams based on the exported file extension.

If the above patch was too generic and heavy-weight for consideration,
please see this alternative, simpler, patch.  It just adds a flag that,
when enabled, runs for SVG images exported via PlantUML.

The motivation behind these patches should be fairly clear from the
attached image below demonstrating the unreadability of SVG-text images
when embedded in PDFs as viewed in one of my local PDFs produced with
OrgMode when viewed through Evince on Debian Stable.  Fortunately,
Inkscape is kind enough to keep the original text in the SVG, so the
images should be mostly human-readable after the conversion.

Thanks for your time,
Nick


[-- Attachment #2: SVGs with paths vs text as seen in Evince on Debian Stable --]
[-- Type: image/png, Size: 39209 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: Smaller text-to-path patch. --]
[-- Type: text/x-diff, Size: 1748 bytes --]

From 75035915a9722920e2194bcd8f07ec5cf2f97bf7 Mon Sep 17 00:00:00 2001
From: Nick Daly <nick+orgmode-org>
Date: Tue, 13 Apr 2021 21:18:41 -0500
Subject: [PATCH] Add PlantUML SVG to Path.

* lisp/ob-plantuml.el (org-babel-execute:plantuml): Add SVG-specific
post-export step that, when enabled, runs inkscape text-to-path
replacement over the output file.  Enabled with new custom variable
`org-babel-plantuml-svg-text-to-path'.
---
 lisp/ob-plantuml.el | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el
index 93c653870..ee781290c 100644
--- a/lisp/ob-plantuml.el
+++ b/lisp/ob-plantuml.el
@@ -71,6 +71,12 @@ You can also configure extra arguments via `org-plantuml-executable-args'."
   :package-version '(Org . "9.4")
   :type '(repeat string))
 
+(defcustom org-babel-plantuml-svg-text-to-path 'nil
+  "When set, export text in SVG images to paths using Inkscape."
+  :group 'org-babel
+  :version "24.1"
+  :type 'boolean)
+
 (defun org-babel-variable-assignments:plantuml (params)
   "Return a list of PlantUML statements assigning the block's variables.
 PARAMS is a property list of source block parameters, which may
@@ -145,6 +151,10 @@ This function is called by `org-babel-execute-src-block'."
 			 " ")))
     (with-temp-file in-file (insert full-body))
     (message "%s" cmd) (org-babel-eval cmd "")
+    (org-babel-plantuml-post-process out-file)
+    (if (and (string= (file-name-extension out-file) "svg")
+             org-babel-plantuml-svg-text-to-path)
+        (org-babel-eval (format "inkscape %s -T -l %s" out-file out-file) ""))
     nil)) ;; signal that output has already been written to file
 
 (defun org-babel-prep-session:plantuml (_session _params)
-- 
2.20.1


  reply	other threads:[~2021-04-14  2:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08  1:56 [PATCH] ob-plantuml: Add PlantUML block post-processing Nick Daly
2021-04-14  2:24 ` Nick Daly [this message]
2021-05-01  9:03   ` Bastien
2021-05-01 10:51   ` Bastien
2021-05-02 15:14     ` Nick Daly
2021-05-02 17:31       ` Bastien

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875z0p1u3f.fsf@europa \
    --to=nick+orgmode-org@despisinggravity.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).