Автоматическое копирование и вставка?

Автоматическое копирование и вставка?

Я нашел программу, которая может конвертировать PDF в LaTeX, и поэтому у меня есть .texфайлы различных учебников по математике. Я хочу составить список теорем из книги, поэтому я вручную копирую и вставляю из файла .tex. Есть ли способ автоматизировать этот процесс? Например, я мог бы скопировать каждую строку/абзац, который начинается со слова теорема. В частности, я использую LyX.

решение1

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

(require 'cl) ; place your cursor after this paren and pres C-x C-e

(defun **strip-stuff (file &optional environments)
  "Takes the current file and strips every environment from
`ENVIRONMENTS` into `FILE`."
  (interactive "FFile name: \nxList of Environments (\"one\" \"two\" \"etc\"): ")
  (if (every 'stringp environments)
      (progn
        (beginning-of-buffer)
        (let ((search-regex (concat "\\\\begin{"
                                    (mapconcat 'identity
                                               environments
                                               "\\|")
                                    "}")))
          (while (search-forward-regexp search-regex nil t)
            (LaTeX-mark-environment)
            (copy-region-as-kill (point) (mark))
            (save-excursion
              (find-file file)
              (end-of-buffer)
              (yank)
              (newline 2)
              (save-buffer)
              (previous-buffer))
            (exchange-point-and-mark)))
        (message "Strip complete.  Check %s for the output." file))
    (message (concat "The environment variable you provided"
                     " was not a list of strings.")))) ; here too

и просто примените его ( M-x **strip-stuff) в своем файле.

Я опубликовал видео пример этого рабочего процессана ютубе. Демонстрируется, как автоматически применить функцию к нескольким файлам с помощью простого клавиатурного макроса.

решение2

Это не вопрос, связанный с TeX. Если вы хотите вырезать и вставить всего несколько абзацев, вам следует ознакомиться с серьезным текстовым редактором. Я использую nvi, но обычно вы захотите проверить Vim и Emacs, прежде чем рассматривать другие редакторы. Для массовой автоматизации вам следует использовать в самом списке для изучения sed (потоковый редактор) и shell script или какой-либо язык сценариев (Perl, Python приходят на ум). Предполагается изучение регулярных выражений.

Обратите внимание, что отсутствие собственного языка сценариев сделает ОС Windows бесполезной для серьезной обработки текста, поэтому вам придется использовать какую-либо ОС UNIX или UNIX-подобную ОС.

Отказ от ответственности: я слышал о PowerShell для Windows, но никогда не делал ничего серьезного с этой ОС.

Связанный контент