Участник:KiRiK/TeXnice

Материал из MachineLearning.

Перейти к: навигация, поиск

Содержание

Тезисы

\documentclass[dvips, intlimits, 10pt, unicode]{article}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}

\begin{document}
Многие научные журналы и конференции принимают статьи в формате \LaTeX. Как правило, авторские тексты содержат значительное количество типографических ошибок, которые исправляются корректорами вручную, что требует много времени и внимания. Предлагаемая система предназначена для автоматизации корректуры и существенного уменьшения времени ручной работы. Идея проекта основана на наблюдении, что большинство ошибок являются типовыми, и их исправление может быть формализовано с помощью системы правил макроподстановок (макросов), в простейшем случае заменяющих текст по шаблону [2].

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

Если пользователь не согласен с предлагаемой заменой, то либо исправляет текст, либо модифицирует макрос, либо создаёт новый макрос. В первом случае прецедент считается отрицательным примером. Все согласия пользователя - положительными примерами. В результате для каждого макроса формируется обучающая выборка.

В случае изменения набора макросов просматриваются все ранее обработанные документы. Если обнаруживаются случаи применимости нового макроса, и пользователь соглашается внести соответствующую правку, документ удаляется из списка обработанных и переносится в очередь документов для правки. Таким образом, поддерживается требование "ни один из макросов не применим ни к одному из уже обработанных документов".

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

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

Для обработки документы \LaTeX [1] представляются в виде дерева. Узлами дерева являются: команды, их аргументы, формулы, абзацы, слова, и т.п. Терминальными вершинами дерева символы, отступы и промежутки. Такое представление позволяет в макросах не только указывать последовательности символов, но и определять контекст.

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

1. Львовский С.М. Набор и верстка в пакете \LaTeX. М., 2003.

2. Смит, Билл. Методы и алгоритмы вычислений на строках (regexp) = Computing Patterns in Strings. М., 2006.

\end{document}


Пожелания к оформлению документов LaTeX

  • Пробелы (или символы им аналогичные), идущие подряд, заменяются одним.
  • Идущие подряд пустые строки (или им аналогичные \par) заменяются одной пустой строкой.
  • Содержимое окружений и выключенных формул содержит отступ в начале строк.
  • Команда, начинающая группу, оформляется на новой строке.
  • Если строка превышает 80 символов, на последнего пробела из первых 80 символов вставляется перенос строки.
  • Команды и окружения, начинающие новый абзац (например, главы и разделы), начинаются с новой строки. Если на корректность не повлияет, то отделяются пустой строкой. В противном случае, закомментированной пустой строкой.
  • Включенные формулы вставляются так же, как обычный текст.
  • Если команда ничего не выводит в текущем месте, она оформляется на отдельной строке.
  • Параметры команд и окружений располагаются так же, как в файле с описанием команд.

Оформление списков

  • Каждый элемент списка (например, начинающийся с \item) начинается с новой строки.

Оформление таблиц

  • Каждая строка таблицы оформляется на отдельной строке в тексте.


Описание команд LaTeX

% пустые строки и строки, начинающиеся с %, игнорируются парсером
% Формат описания команды.
% \<описания команды с аргументами в формате \def>{
% #1: <тип параметра (length, path и т.п.), если особенный>
% ...
% <макет команды; например, par bf+ #1 group+ bf* #2 group-> или особый тип команды (symbol, length)
% }

% Типы команд.
% length - длина (измерение)
% symbol - символ

% Типы параметров.
% path   - путь до файла
% label  - метка
% raw    - набор какой-то фигни, которую парсить не хочется

% Обозначения для состояний.
% <свойство>+ состояние включается
% <свойство>- состояние выключается
% <свойство>* состояние переключается

% Состояния.
% bf    - жирность
% it    - наклон
% math  - математический режим
% group - группа

% Дополнительные ключевые слова.
% par   - начало абзаца
% line  - начало строки
% item  - элемент списка
% ref   - ссылка
% image - картинка

\abstract#1{}

\alpha{symbol}

\arccos{symbol}

\arcsin{symbol}

\author#1{}

\BibAuthor#1
{group+ it+ #1: group-} 

\bibitem#1
{#1: label
ref}

\BibTitle#1
{group+ #1 group-}

\caption#1{}

\cdots{symbol} 

\centering{}

\cite#1{
#1: label
ref
}

\columnwidth{length}

\cos{symbol}

\ddot#1{group+ #1 group-}

\Delta{symbol}

\delta{symbol}

\dot#1{group+ #1 group-}

\dots{symbol}

\email#1{}

\emph#1{group+ it* #1 group-}

\eqref#1{
#1: label
ref
}

\frac#1#2{group+ #1 group- group+ #2 group-}

\Gamma{symbol}

\geq{symbol}

\geqslant{symbol}

\gg{symbol}

\hline{}

\in{symbol}

\includegraphics[#1]#2{
#1: raw
#2: path
image
}

\includegraphics#1{
#1: path
image
}

\infty{symbol}

\int{symbol}

\it{it+}

\item{item}

\label#1{#1: label}

\lambda{symbol}
 
\ldots{symbol} 

\left#1{symbol}

\leq{symbol}

\leqslant{symbol}

\limits{% todo
}

\linebreak{line}

\ll{symbol}

\ln{symbol}

\maketitle
{}

\mid{symbol}

\mu{symbol}

\No{symbol}

\notag{% todo
}

\nu{symbol}

\omega{symbol}

\organization#1{}

\paragraph#1{}

\pi{symbol}

\pm{symbol}

\ref#1{
#1: label
ref
}

\right#1{symbol}

\section#1{par group+ #1: group- par}

\sigma{symbol}

\sim{symbol}

\sin{symbol}

\sqrt#1{#1}

\sum{symbol}

\tanh{symbol}

\tau{symbol}

\textbf#1{group+ bf+ #1 group-}

\thanks#1{}

\theta{symbol}

\thickapprox{symbol}

\thicksim{symbol}

\tilde#1{group+ #1 group-}

\title#1[#2]{}

\title#1{}

\varphi{symbol}

\varsigma{symbol}

\vartheta{symbol}

\xi{symbol}


Формализованные правила замены

% пустые строки и строки, начинающиеся с %, игнорируются парсером
% Формат записи макросов.
% <где искать>: <что заменить> -> <на что заменить>
% <где искать> может быть пустым (в этом случае ищется везде) командой с номером аргумента, например, \author1, или состоянием, например, math
% <что заменить> и <на что заменить> представляют собой, вообще говоря, регулярные выражения. в качестве аргументов которых могут выступать конструкции вида
% #1<ключевое слово><номер>
% а весь текст, который воспринимается "как есть", заключен в двойные кавычки

% Ключевые слова (чувствительны к регистру):
% number    - число
% space     - промежуток - пробел или его аналог
% letter    - буква - английская или русская буква
% char      - один символ (буква, символ препинания, арифметики или команда, определенная как символ; НЕ ПРОБЕЛ!)
% word      - слово - последовательность букв
% plainText - набор слов с пробелами и знаками препинания (.,!?:)
% можно определять свои ключевые слова - наборы слов в одну строку
#предлог = ["для", "на", "под", "из-за", "с", "до", "от", "в", "из", "при", "о", "по"]
#отступ = ["\,", "\:", "\;", "~"]
%<англоподобная буква кирилицы> = а, А, В, е, Е, к, К, М, н, Н, о, О, р, Р, с, С, Т, у, У, х, Х, ь, Ь

% использование ключевых слов:
% "\""#word1"\"" -> "<<"#word1">>"


% убираем лишние пробелы
#space1"~" -> "~"
"~"#space1 -> "~"

% т.д., т.к. и т.п.
#параДляТ = ["е" , "д", "к", "п"]
"т."#параДляТ1"." -> "т.\,"#параДляТ1"."
"Т."#параДляТ1"." -> "Т.\,"#параДляТ1"."
"Т.\,е." -> "То есть"
"Т.\,д." -> "Так далее"
"Т.\,к." -> "Так как"
%"Т.\,п." -> "Т.\,п."

"\""#word1"\"" -> "<<"#word1">>"

"\textit{"#plainText1"}" -> "\emph{"#plainText1"}"
"{\it"#plainText1"}" -> "\emph{"#plainText1"}"

\author1: "."#letter1 -> ".\,"#letter1
\author1: "."#отступ1#letter1 -> ".\,"#letter1
\author1: #word1#отступ1#letter1 -> #word1"~"#letter1

\BibAuthor1: "."#letter1 -> ".\,"#letter1
\BibAuthor1: "."#отступ1#letter1 -> ".\,"#letter1
\BibAuthor1: #word1#отступ1#letter1 -> #word1"~"#letter1

#space1"$"#char1"$" -> "~$"#char1"$"
#предлог1#space1 -> #предлог1"~"
#space1"\cite" -> "~\cite"


% Это то, что тоже нужно бы оформить. Конечно, есть еще множество правок для формализации, но пока хватает разборок с тем, что есть.
%\cite{#1},<промежуток или отступ>\cite{#2} -> \cite{#1, #2}
%
%\caption должно заканчиваться точкой
%
%русские буквы непосредственно в формулах: если подряд только похожие на английские, то заменить английскими, иначе включить в тэг \text
%
%вне формулы: <число>-<число> -> <число>--<число>
%
%<формула>-<формула> -> <формула>--<формула>
%
%<промежуток или отступ>-<промежуток или отступ> -> <промежуток>"---<промежуток>
%
%<промежуток или отступ>--<промежуток или отступ> -> <промежуток>"---<промежуток>
%
%<промежуток или отступ>---<промежуток или отступ> -> <промежуток>"---<промежуток>
Личные инструменты