Абстрактная функция не имеет никакого implemention, и она может только быть объявлена на абстрактном классе. Это вынуждает производный класс обеспечить реализацию.
виртуальная функция А обеспечивает реализацию по умолчанию, и она может существовать или на абстрактном классе или на неабстрактном классе.
Так, например:
public abstract class myBase
{
//If you derive from this class you must implement this method. notice we have no method body here either
public abstract void YouMustImplement();
//If you derive from this class you can change the behavior but are not required to
public virtual void YouCanOverride()
{
}
}
public class MyBase
{
//This will not compile because you cannot have an abstract method in a non-abstract class
public abstract void YouMustImplement();
}
Sphinx имеет TextBuilder для формата вывода txt. Просто попробовал, и, похоже, он делает то, что вы ищете.
Однако он может быть немного устаревшим, потому что его нет в Makefile по умолчанию. Но он хорошо работал с моей довольно сложной документацией (150 страниц pdf). Чтобы использовать его, просто добавьте к нему следующую цель:
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) _build/text
@echo
@echo "Build finished."
Также имейте в виду, что Sphinx реализует только подмножество первых спецификаций.
Я также видел, как это делалось путем рендеринга в html с помощью rst2html, а затем преобразования html в обычный текст с помощью HTML-браузера командной строки, например:
В каждом из этих браузеров есть переключатель командной строки или что-то подобное для рендеринга вывода в файл .txt, поэтому вы можете создать двухстрочный сценарий с именем 'rst2txt', например:
rst2html docs.rst docs.html
lynx -dump docs.html > docs.txt