Как я преобразовываю ЛАТЕКС в простой текст (ASCII)?

Подумайте об этом как заполнитель. Это может быть весьма полезно, если у вас есть код, который следует за определенным шаблоном, но не должен быть привязан к какой-либо конкретной функции.

Например, рассмотрите метод расширения Enumerable.Select.

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

Этот метод принимает вместо Func<T, TResult> любую конкретную функцию. Это позволяет использовать его в в любом контексте , где применяется вышеприведенный шаблон.

Так, например, скажем, у меня есть List<Person>, и я хочу просто имя каждого человека в список. Я могу это сделать:

var names = people.Select(p => p.Name);

Или сказать, что я хочу возраст каждого человека:

var ages = people.Select(p => p.Age);

Сразу видно, как я был способен использовать тот же код, представляющий шаблон Select) с двумя различными функциями (p => p.Name и p => p.Age) .

Альтернативой было бы написать другую версию Select каждый раз, когда вы хотели бы сканировать последовательность для другого значения. Поэтому для достижения такого же эффекта, как и выше, мне понадобится:

// Presumably, the code inside these two methods would look almost identical;
// the only difference would be the part that actually selects a value
// based on a Person.
var names = GetPersonNames(people);
var ages = GetPersonAges(people);

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

64
задан chuckg 9 February 2009 в 21:40
поделиться

6 ответов

CatDVI может преобразовать DVI в текст и пытается сохранить форматирование.

16
ответ дан Beardo 7 November 2019 в 12:12
поделиться

Другая опция состоит в том, чтобы использовать htlatex, чтобы создать веб-страницу из ЛАТЕКСНЫХ источников, затем использовать ссылки для преобразования в простой текст. Я использовал командную строку

links -dump -no-numbering -no-references input.html > output.txt

в прошлом, которое дало довольно хороший результат. Это будет, конечно, скорее соответствовать представлению представленного HTML, чем исходного PDF, таким образом возможно, не точно, что Вы хотите.

8
ответ дан bluebrother 7 November 2019 в 12:12
поделиться

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

я обычно затем должен пройти и вручную зафиксировать некоторое обертывание строки...

3
ответ дан Brian Postow 7 November 2019 в 12:12
поделиться

Можно попробовать некоторые программы, предложенные здесь:

TEX к ASCII

14
ответ дан Diego Sevilla 7 November 2019 в 12:12
поделиться

, который вы можете импортировать в Lyx и использовать функцию экспорта Lyx в текст.

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

0
ответ дан 24 November 2019 в 15:26
поделиться

Попробуйте шаги здесь: http://zanedp.livejournal.com/201222.html

Вот последовательность, которая преобразует мой файл латекса на простое текст:

$ latex file.tex
$ catdvi -e 1 -U file.dvi | sed -re "s/\[U\+2022\]/*/g" | sed -re "s/([^^[:space:]])\s+/\1 /g" > file.txt

Опция -e 1 для Catdvi говорит ему выводить ASCII. Если вы используете 0 вместо 1, он будет выводить Unicode. Unicode будет включать все специальные символы, такие как пули, Emdashes и греческие буквы. Он также включает лигации для некоторых буквенных комбинаций, таких как «FI» и «FL». Вы можете этого не понравиться. Итак, используйте -e 1 вместо этого. Используйте возможность «U », чтобы сказать ему, чтобы распечатать значение Unicode для неизвестных символов, чтобы вы могли легко найти и заменить их.

Вторая часть команды находит строку [u + 2022], которая используется для обозначения символов пули (•) и заменяет их звездочкой (*).

Третья часть съедает все дополнительные пробелы CATDVI, чтобы сделать текст полный оправданный при сохранении пробелов в начале строк (отступ).

После запуска этих команд вы будете разумно искать файл .txt для строки [u +, чтобы убедиться, что символы Unicode не могут быть сопоставлены с ASCII, остались позади и исправить их.

3
ответ дан 24 November 2019 в 15:26
поделиться
Другие вопросы по тегам:

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