Проблема AucTeX/emacs с символом '$'

AucTeX на emacs является довольно удивительным инструментом, но когда я пишу один единственный '$', вся окраска повреждается.

Обычно один '$' сопровождается другим '$' для выражения математических уравнений, но для источника, перечисляющего единственный '$', часто используется.

\begin{Verbatim}
(let ((buffer (url-retrieve-synchronously
...
    (re-search-forward "^$" nil 'move) <-- It breaks the coloring 
...
\end{Verbatim}

Легкое решение состоит в том, чтобы следующим образом соответствовать '$'.

(re-search-forward "^$" nil 'move) ;; $

Есть ли какая-либо опция в AucTeX для предотвращения этой единственной проблемы 'с $'?

8
задан Artjom B. 3 June 2015 в 21:23
поделиться

2 ответа

AUCTeX знает, что $ не является особенным в дословной среде, но вы должны сказать ему, что Verbatim является дословной средой, поскольку она размещена в LaTeX-verbatim-environments-local .

Если AUCTeX установлен оптимально, он уже знает, потому что AUCTeX загружает обработчик стиля для каждого файла, который вы загружаете через \ usepackage и друзей. Возможно, вам потребуется указать ему, чтобы он анализировал ваш заголовочный файл с помощью C-c C-n ( TeX-normal-mode ).

Если этого недостаточно, это означает, что Verbatim был определен в файле стилей, для которого AUCTeX не имеет достаточно информации. Вы можете указать AUCTeX проанализировать некоторые или все файлы стилей, которые вы установили; см. главу «Автоматический» в руководстве AUCTeX.

Иногда AUCTeX не удается проанализировать файл стиля; тогда вы можете сделать эту часть вручную. В приведенном ниже коде предполагается, что вы получаете среду Verbatim из пакета fancyvrb ; в противном случае измените имя. Создайте файл с именем fancyvrb.el в одном из каталогов, упомянутых в TeX-style-path , со следующим содержимым (могут быть другие вещи, которые стоит туда положить, я только что адаптировал alltt.el ):

(TeX-add-style-hook
 "fancyvrb"
 (lambda ()
   (LaTeX-add-environments "BVerbatim" "LVerbatim" "SaveVerbatim" "Verbatim")
   (make-local-variable 'LaTeX-indent-environment-list)
   (add-to-list 'LaTeX-indent-environment-list '("BVerbatim" current-indentation))
   (add-to-list 'LaTeX-indent-environment-list '("LVerbatim" current-indentation))
   (add-to-list 'LaTeX-indent-environment-list '("SaveVerbatim" current-indentation))
   (add-to-list 'LaTeX-indent-environment-list '("Verbatim" current-indentation))
   (make-local-variable 'LaTeX-verbatim-regexp)
   (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|\\([BL]?\\|Save\\)Verbatim"))
   (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "Verbatim")
   (when (and (featurep 'font-latex)
              (eq TeX-install-font-lock 'font-latex-setup))
     (font-latex-set-syntactic-keywords)
     (setq font-lock-set-defaults nil)
     (font-lock-set-defaults))))

(Я думал, что вы также можете сделать это вручную через файловые переменные, но это не сработало, потому что настройки блокировки шрифтов создаются до инициализации локальных переменных файла , и я не вижу обходного пути.)

9
ответ дан 5 December 2019 в 12:55
поделиться

Есть ли причина использовать дословное вместо дословного? verbatim делает для меня все в разделе одинакового цвета. Кроме того, я предпочитаю использовать пакет списков . для отображения программного кода в латексе.

Используя списки пакетов, вы можете добавлять неформатированный текст, как если бы вы делали это с \ begin {verbatim}, но его основная цель - включить исходный код любого языка программирования в ваш документ.

4
ответ дан 5 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: