emacs里面画草稿图

这个是纯职业需求,很多时候要画简单的人体结构图或者内脏示意图以及经络气脉走向,再辅以简单文字介绍,请问有相关插件实现吗?

artist mode画出来很奇怪,容易产生误解,ditaa,graphviz都要写代码,完全不符合随意画的情况,我找到两个插件,paint.el和epaint模式,前者只有单一的黑色细线,不好区分部位,后者启动报错,不知道怎么回事,但是从介绍看都符合随手画的情况,符合我的使用环境,只是前者单调后者不能用 epaint项目地址 https://github.com/chuntaro/epaint

emacs版本是27,x86平板电脑,请问如何使用epaint或者 有别的方法实现我的需求,感谢!

建议使用photoshop krita等专业绘图软件

我是给徒弟们演示的时候用的,就类似于涂鸦之类,你说的这些不现实,比如画一个三角形就代表肝脏,心形代表心脏等等,而且一般都是左边打开org,右边直接画,以便更形象

具体是什么错

epaint

(require (quote epaint))

时提示:

Debugger entered--Lisp error: (void-variable cl-struct-epaint-drawable)
  (cl-struct-slot-info cl-struct-epaint-drawable)

需要在“epaint-context.el”文件里添加一行:

(defvar cl-struct-epaint-drawable (quote epaint-drawable))

在使用"M-x epaint"时,也会出现上述类似的错误,同样在该文件里再添加一行:

(defvar cl-struct-epaint-gc (quote epaint-gc))

不修改"epaint-context.el"文件的话,在使用"epaint"之前,可以这样使用:

(add-to-list (quote load-path) "~/.emacs.d/site-lisp/epaint")

(with-eval-after-load (quote epaint-context)
  (unless (boundp (quote cl-struct-epaint-drawable))
    (defvar cl-struct-epaint-drawable (quote epaint-drawable)))
  (unless (boundp (quote cl-struct-epaint-gc))
    (defvar cl-struct-epaint-gc (quote epaint-gc))))

(require (quote epaint))
1 个赞

我已经完全放弃用软件绘图了。。。

准备好铅笔、橡皮,需要归档的图就拍照。

软件绘图相对于铅笔有一个劣势,就是铅笔可以慢慢描,橡皮可以擦表层,软件不行。

Debugger entered–Lisp error: (void-variable cl-struct-epaint-drawable) (cl-struct-slot-info cl-struct-epaint-drawable)

和 BlindingDark朋友一样的错误

我的目的是配合org同时简单画一些示意图,就像上面所说的用三角形代表肝脏,图文结合,方便理解,铅笔虽然方便,但是还是达不到左文右图更好

感谢您的指点!

另外我M-x epaint之后,出现的画布不能全屏,只在左上角一块,有办法默认画布全屏吗 还有我在画布上面无法画出图案,就像您发的图片上那样

我也是第一次用的,暂时没动力修改别人的包。

这个包目前在我看来有一些需要添加和修改的功能:

  • [ ] 自定义画布的大小
  • [ ] 使用调色板切换颜色
  • [ ] 绘制预设的图形,已经内置了矩形、圆形、直线、随手画,没有三角形
  • [ ] 保存与恢复画布
  • [ ] 在触屏设备上用手指绘图

原来如此,那就将就用了,不过还是期待将来你有兴趣去改进这个插件,谢谢

还有就是你进入epaint之后,是直接可以用鼠标来绘画吗,如果目前不支持手指,我暂时就用paint.el来将就一下

是在PC上用外置鼠标画的,你的触屏设备不能用的话,那就是不能用手指画了。

关于“自定义画布的大小”,我先帮你改一点吧,这个改法不算好,在源码里画布的大小是写成固定的了:

(with-eval-after-load (quote epaint-canvas)
  (defvar epaint-canvas-drawable-width 640)
  (defvar epaint-canvas-drawable-height 480)
  (cl-defmethod initialize-instance ((this epaint-canvas-class) &optional args)
    (require (intern (concat "epaint-internal-format-" (symbol-name epaint-internal-format))))
    (epaint-plug-in-load-all)
    (cl-call-next-method this)
    (let (gc-args)
      (dolist (prop '(:width :height))
        (when-let (value (plist-get args prop))
          (setf gc-args (plist-put gc-args prop value))))
      (setf (drawable this) (epaint-drawable-create epaint-canvas-drawable-width epaint-canvas-drawable-width)
            (foreground this) (apply #'make-epaint-gc (cl-list* :color t gc-args))
            (background this) (apply #'make-epaint-gc (cl-list* :color nil gc-args))
            (gc this) (foreground this))
      (epaint-create-image this :point (plist-get args :point)))))

关于修改画笔颜色的:

(with-current-buffer (get-buffer "*EPaint*")
  (epaint-gc-set-color
   (foreground epaint-canvas)
   (map (quote vector)
        (lambda (number)
          (car (cl-truncate (* number 255))))
        (color-name-to-rgb "purple"))))

当前EMACS所支持的所有颜色:

(list-colors-display)

有兴趣修改的,可以参考下上面的内容。

恩,太好了,实在感谢您

关于那段代码,是写进epaint canvas.el里面还是直接写到.emacs

加到.emacs里面了,正常,可能我平板性能不够,用起来很卡,暂时先放着,用paint.el代替现在,同时感谢楼上所有给建议的朋友们,祝你们身体健康