Org-mode Emacs или как перестать верить в GUI

orgmode_c_precents.png

Удивительная вещь, в основном я пользуюсь для управления заданиями GNOME GTG синхронизированный через Dropbox(бойся облаков) и моё желание покопаться в org-mode было чисто из-за того, что GNOME GTG неудобен для мелких заданий, скорее для крупных… в день длинной. Но чем больше я узнавал про org-mode тем больше в нем зависал, списки, код, чекбоксы, создание таблиц и графиков.

Главный принцип — никаких сложных форматов и бинарных частей, все в plain-text и это подкупает.

Проверка возможностей org-mode

Краткая справка по командам а также основной сайт со всеми инструкциями.

Статьи на русском:

Проверить возможности подуровневых списков

Ну тут и рассказывать, ставиш * в начале строки, после неё пишеш название, чем больше звездочек, тем больше глубина списка

* Главный уровень
** Подуровень
*** Подподуровень

Назначение заданий

Всё делается комбинацией C-c C-t, с начала устанавливается TODO, после повторного нажатия, задача считается закрытой. Следующее нажатие C-c C-t вернет все на круги своя.

** DONE Проверить возможность назначения и выполнения заданий
CLOSED: [2013-07-31 Ср. 22:40]

Проверить почему не ставиться дата окончания задания

Потому как надо прописать в коде .emacs следующие настройки

;;Временная метка при закрытии задания
(setq org-log-done t)

Как проставить ссылки в документе

Ну вот ссылка на наш сайт ссылка на статью по теме , формат указан ниже, также можно заметить что интернет ссылки, подхватываются автоматически, а ссылки на файлы дожны начинаться с заветного слова file

[[ссылка][описание]]       или альтернативно           [[ссылка]]
[[file//адрес абсолютный или относительный]]

Вставка картинок

Попробуем вставить сюда картинку кодом

#+CAPTION: This is Science Bastard
#+LABEL: fig:SED-AVATAR
[[file://../../avatar/docsleepless.jpg]]

а отобразить её в Emacs можно с помощью включения M-x iimage-mode

docsleepless.jpg

Figure 2: This is Science Bastard

Метка Label нужна для ссылок при экспорте, наример при экспорте в LaTeX

Назначение заданий по календарю

Делается с помощью нажатия C-c C-s перемещение по календарю осуществляется стрелками при зажатой клавише Shift,а предел выполнения по комбинации C-c C-d

*** Пример назначенного задания
SCHEDULED: <2013-04-07 Вс.>

Чекбоксы

Состоят из — [] ,иногда для количественной оценки вставляют [/] или для процентой [%], вставляют сразу перед списком чекбоксов.

*** Обычные(пример чикбоксов) [0/3]
 - [ ] Инна
 - [ ] Маша
 - [ ] Даша

Простановка нужного чекбокса осуществляется клавишами C-c C-c в данной строке.

*** Процентные чекбоксы:[75%]
 - [X] 1
 - [X] 2
 - [X] 3
 - [ ] 4

Вставка LaTeX фрагментов

Это очень круто, надо поставить только пакет CDLaTeX http://staff.science.uva.nl/~dominik/Tools/cdlatex/cdlatex.el или с помощью пакетного менеджера MELPA, а дальше все просто, для экспорта в html используется mathjax Θ Вот и вставили символ посреди текста, моё мнение что это лучше чем генерация картинок из формул, хотя такая опция тоже есть.

GUI Emacs может автоматически преобразовывать формулы и символы после ввода комбинации C-c C-x \, повторный ввод, отменяет этот режим.

Одна формула
\begin{equation}
 \frac{1}{f}=\sqrt[3]{\mu RT}
\end{equation}
Две формулы
#+HTML: [lаtex] 
\begin{eqnarray}
 pV&=\frac{m}{\mu} RT\\
 pV&=\frac{m}{\mu} RT
\end{eqnarray}
#+HTML: [/lаtex]

Одна формула

$latex \frac{1}{f}=\sqrt[3]{\mu RT} $

Две формулы

\( \begin{eqnarray} pV&=\frac{m}{\mu} RT\\ pV&=\frac{m}{\mu} RT \end{eqnarray}
\)

Экспорт формул в WordPress

этот кусок нужен для экспорта в данный блог

#+HTML: [lаtex]
код
#+HTML: [/lаtex]

Автоматическое преобразование и борьба с ним

Согласно справке следующие символы ‘^’,’_’,'{}’ автоматически подвергаются преобразованию.

Локальное решение поместить в начале org файла

# это полностью отключит преобразование
#+OPTIONS: ^:nil
#+OPTIONS: _:nil

# это будет преобразовывать всечто в скобках
#+OPTIONS: ^:{}
#+OPTIONS: _:{}

W^T_F W^{T}_{F}

W^T_F WTF

для радикальных мер можно задать эти параметры в управляющем файле .emacs

(setq org-export-with-sub-superscripts nil)
(setq org-use-sub-superscripts '{})

Вставка програмного кода и его подсветка

Собственно проще простого.

http://orgmode.org/manual/Working-With-Source-Code.html#Working-With-Source-Code

#+begin_src python
import os
a=5
print "Hello Megan"
#+end_src

Получаем

import os
a=5
print "Hello Megan"

Как видно org-mode самостоятельно разбирается с подсветкой синтаксиса

Немного разобрался как вставлять код самого org-mode это конструкцмия begin\end_src org , но помогает не всегда Поэтому иногда я прятал код в конструкции begin\end_example .

Важным также будет заметить, что без настроек org-mode использует для экспорта ТЕКУЩУЮ подсветку синтаксиса, при этом не перенося фон и как результат темные темы экспортируются в невидимое нечто.

Вставка графов

По мимо того что можно вставлять код, также можно его и выполнять и например получать графы http://doc.norang.ca/org-mode.html#Graphviz прописать настройки в .emacs файле

;; этот кусок конфига отвечает за 
;; выполнение кода и генерацию изображений
;; в org-mode
(org-babel-do-load-languages
 (quote org-babel-load-languages)
 (quote ((emacs-lisp . t)
         (dot . t)
         (ditaa . t)
         (R . t)
         (python . t)
         (ruby . t)
         (gnuplot . t)
         (clojure . t)
         (sh . t)
         (ledger . t)
         (org . t)
         (plantuml . t)
         (latex . t))))

при экспорте(С-c C-e) система спросить Вас выполнять ей код или нет, пока пробовал только графы , хотя есть опции работы с UML диаграммами, Gnuplot и прочим. а ditaa вообще бездонный океан

Пример кода

#+begin_src dot :file ../pics/some_dot_filename.png :cmdline -Kdot -Tpng
digraph G {
  size="8,6"
  ratio=expand
  edge [dir=both]
  plcnet [shape=box, label="PLC Network"]
  subgraph cluster_wrapline {
    label="Wrapline Control System"
    color=purple
    subgraph {
    rank=same
    exec
    sharedmem [style=filled, fillcolor=lightgrey, shape=box]
    }
    edge[style=dotted, dir=none]
    exec -> opserver
    exec -> db
    plc -> exec
    edge [style=line, dir=both]
    exec -> sharedmem
    sharedmem -> db
    plc -> sharedmem
    sharedmem -> opserver
  }
  plcnet -> plc [constraint=false]
  millwide [shape=box, label="Millwide System"]
  db -> millwide

  subgraph cluster_opclients {
    color=blue
    label="Operator Clients"
    rankdir=LR
    labelloc=b
    node[label=client]
    opserver -> client1
    opserver -> client2
    opserver -> client3
  }
}
#+end_src

some_dot_filename.png

Ведение статьи и экспорт в блоги

В основном можно почитать тут

Собственно это , то что больше всего меня привлеклов org-mode, да он проигрывает LaTeX в чем-то, в чем-то не так удобен (для меня) в назначении заданий, но вот постинг, причем с передачей картинок, подсветки исходного кода ,автоматическим составлением содержания — подкупил, не говоря уже об экспорте .odt, LaTeX и автоматическое создание презентаций из org-mode в beamer

Перенос формул

Тут как то связано с парсером mathjs он настроен на открытые и закрытые скобки , надо смотреть. Пока обхожусь вставкой

#+HTML: [lаtex]
  \begin{eqnarray}
    pV&=\frac{m}{\mu} RT\\
    pV&=\frac{m}{\mu} RT
  \end{eqnarray}
#+HTML: [/lаtex]

Управляющие слова

#+TITLE: Org-mode Emacs или как перестать верить в GUI
#+TAGS: org-mode, emacs, wordpress, blog
#+CATEGORY: Обзоры
#+PERMALINK: org-mode-tutorial
#+STARTUP:  showall
#+STARTUP: indent
#+STARTUP: hidestars

Вставка содержания в нужное место

Вот пример о том как разместить текст до содержания.

#+OPTIONS: toc:nil
#+OPTIONS: title:nil

#+BEGIN_ABSTRACT

#+ATTR_HTML: align="middle"
../pics/orgmode_c_precents.png
#+LABEL: fig:ORG_MODE

Главный принцип - никаких сложных форматов и бинарных частей, все в
plain-text и это подкупает.

#+HTML: <!--more-->

#+END_ABSTRACT
#+TOC: headlines all

Параметры отображения содержания

Ошибки с содержанием в org2blog

Долгое время не работала по умолчанию, пока я не прочитал этот блог и не поставил себе форк по свежее org2blog (также рекомендую ставить из MELPA)

git clone https://github.com/RenWenshan/org2blog

Тут правда требуется перед постингом сделать экспорт в HTML , и лишь потом запостить.

Заключение

Это мой маленький обзор, здесь я много не коснулся, не рассказал про учет заданий и назначение их по расписанию, расстановку тегов. Также совсем не рассказал про таблицы и как их создавать в org-mode .

Вопросов ещё вагон и маленькая тележка… но уже существующими возможностями вполне можно пользоваться.

  • Также можете прочесть руководство о том как я готовил Emacs
  • UPD Здесь я немного написал об Org-mode Agenda и о том как из неё извлекать данные во вне.

3 Comments

  1. Андрей

    01.09.2017 at 16:30

    Никогда не был граммар-наци, но после вашей статьи я их понимаю…

Добавить комментарий

Your email address will not be published.

*

*

© 2017 Crafting.be

Theme by Anders NorénUp ↑