
После моегопредыдущий вопрос, я успешно создалдиф.тексфайл большого, сложного проекта, результаты которого можно увидетьздесь. (В конце концов, это было сделано путем обновленияlatexdiffдо последней версии: 1.0.3, которой нет в Ubuntu 12.04 ppas и используя: PICTUREENV=(?:picture|DIFnomarkup|lstlisting|figure|table)[\w\d*@]*
в качествеФайл конфигурации.
Здорово иметь возможность прокручивать документ и видеть все улучшения, которые были сделаны. Спасибо latexdiff!
Следующая проблема заключается в том, что документ pdf очень большой, а изменения относительно редки - я не могу ожидать, что мои экзаменаторы просмотрят все 300 страниц в поисках красного и синего текста, указывающего на изменения. Мне нужнорезюме изменений. Это, как минимум, будет содержать текст, который был изменен. В идеале это также будет содержать окружающие слова для контекста и (в крайнем случае) номер страницы изменения. Способы, которые я придумал, чтобы сделать это:
- Переосмыслите
\DIFdelbegin
окружающую среду - Используйте регулярное выражение, например grep, чтобы извлечь все строки из dif.tex, содержащие
\DIF
и скомпилировать их отдельно - Сделайте это с помощью команд latexdiff (я проверил документацию, но не могу понять, как это сделать).
- Будет ли лучше использовать совершенно другой подход для решения этой проблемы (создание доступного списка внесенных изменений, не включая текст, который остался прежним)?
Я знаюаналогичный вопросбыл закрыт на этом сайте. Надеюсь, ясность этого вопроса и предоставление примера сделают его полезным для других.
решение1
Начиная с версии 1.1.0 в latexdiff появилась новая функция, которая выводит только те страницы, на которых были внесены изменения.
Проверьте option
--only-changes
to latexdiff-vc
или options -s ONLYCHANGEDPAGE
или -s ZLABEL
for latexdiff
. Первый вариант гораздо удобнее, так как постобработка выполняется за кулисами.
(Я знаю, что этот вопрос действительно старый, но улучшения latexdiff в этом отношении с момента публикации оригинальных ответов существенны)
решение2
Я думаю, что самый простой способ — использовать grep
. Реализация GNU grep
(которая у вас есть, если вы используете GNU/Linux) предоставляет переключатель, который вызывается, -C
чтобы сделать именно то, что вам нужно: он предоставляет контекстные строки вокруг совпадения.
Что-то вроде этого должно помочь
grep -C 5 '\\DIF' source.tex > destination.tex
Это даст 5 строк до и 5 строк после совпадения. Изменитьад либидо.
Причины, по которым это может потерпеть неудачу
- Если строки контекста пересекают границы среды/группы LaTeX, ваш новый документ не будет скомпилирован.
- Если a
\DIF
существует в пределах 5-строчного "радиуса" от другого,grep
вывод будет содержать дубликаты. Это может не быть большой проблемой, если ваши правки действительно редки, но вам, возможно, придется проверить это визуально.
решение3
Сделайте это вручную.
Я обнаружил, что лучший способ создать «сводку изменений» — это выполнить поиск подиф.тексфайл и вручную выбрать изменения, которые мне нужны. Это было здорово, так как это позволило мне включить только те изменения, которые были необходимы, и включить достаточно контекста, чтобы позволить другим понять, почему были сделаны изменения.
Результат (см.дифсум.pdf), вместе с соответствующими файлами .tex и воспроизводимым кодом, а также примерами данных тезисов были размещены на GitHub для поощрения прозрачности иповторяемыйисследовать:https://github.com/Robinlovelace/thesis-reproducible. Надеюсь, это будет полезно другим людям, желающим оптимизировать использование LaTeX для подачи и изменения дипломных проектов.