Подумайте об этом как заполнитель. Это может быть весьма полезно, если у вас есть код, который следует за определенным шаблоном, но не должен быть привязан к какой-либо конкретной функции.
Например, рассмотрите метод расширения Enumerable.Select
.
Этот метод принимает вместо 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);
Когда делегат выступает в качестве заполнителя, я освобождаюсь от необходимости повторять одну и ту же модель снова и снова в таких случаях.
CatDVI может преобразовать DVI в текст и пытается сохранить форматирование.
Другая опция состоит в том, чтобы использовать htlatex, чтобы создать веб-страницу из ЛАТЕКСНЫХ источников, затем использовать ссылки для преобразования в простой текст. Я использовал командную строку
links -dump -no-numbering -no-references input.html > output.txt
в прошлом, которое дало довольно хороший результат. Это будет, конечно, скорее соответствовать представлению представленного HTML, чем исходного PDF, таким образом возможно, не точно, что Вы хотите.
Моя обычная стратегия состоит в том, чтобы использовать гиперлатекс , чтобы превратить его в веб-страницу, и затем справиться и вставить от веб-браузера. Я нахожу, что это дает лучшее форматирование.
я обычно затем должен пройти и вручную зафиксировать некоторое обертывание строки...
Можно попробовать некоторые программы, предложенные здесь:
, который вы можете импортировать в Lyx и использовать функцию экспорта Lyx в текст.
глупо, если вы не используете Lyx, но если он у вас уже есть, очень быстрое и простое решение. Хороший результат для меня, хотя, честно говоря, мои файлы довольно простые. Не знаю, как конвертировать более сложные файлы.
Попробуйте шаги здесь: 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, остались позади и исправить их.