2011-04-22 3 views
1

Я борюсь с Microsoft Word, чтобы правильно отобразить код Python и мне нужна помощь.auto indenting завернутый код Python в Word

Я пытаюсь вставить большое количество скриптов Python в Microsoft Word с текстом документации, написанным вокруг фрагментов. Некоторые из этих фрагментов Python - это несколько строк, другие - на странице. Поскольку документ составляет около 500 страниц, в нем размещено около 200 фрагментов кода.

У меня есть стиль шрифта, который я создал для фрагментов. Поэтому я могу изменить размер шрифта, цвет, стиль и т. Д. Для всех сразу. Но у меня большая проблема с переносом слов. Длинные инструкции в Python обернуты словом, что затрудняет их чтение, поскольку отступы теряются. Я могу успешно отступать от завернутой строки уровня 1, используя «висячие отступы». Но я ничего не могу сделать с отступом уровня 2 или уровня 3, так как вложенные элементы далее отступают.

Пример (я использовал точки вместо пробелов, потому что держали их удаление)

This is a statement 
This is another statement 
if (condition): 
.........This is a third statement 
.........This is a fourth statement 
.........for loop : 
..................This is a fifth statement 
..................This is a sixth statement 
..................if (condition): 
...........................This is a seventh statement 

Представьте каждое утверждение довольно долго и получает переносится на следующую строку на странице слова. Я получаю

This is a statement 
This is another statement 
if (condition): 
.........This is a third  
statement 
.........This is a fourth  
statement 
.........for loop: 
.................This is 
a fifth statement 
.................This is a 
sixth statement 

Как исправить это словом? Подвесной отступ фиксирует отступы уровня 1 (утверждения в условии if), но не отступы уровня 2 (инструкции в цикле for)

Примечание: Я хотел бы использовать какую-то опцию или плагин или макрос внутри слова. Я не могу использовать редактор кода, копировать и вставлять код в rtf или какой-либо другой формат. Даже если бы я сделал это 200 раз, чтобы заменить все мои фрагменты кода, то, как только я изменил размер шрифта в моем документе, все снова перепутается. Другим вариантом будет некоторая среда IDE, которая встраивает или связывает слова (без необходимости копирования и вставки) и позволяет изменять стиль и размер шрифта в своей собственной среде, которые будут автоматически обновляться во всех случаях в Word.

Пожалуйста, помогите, если сможете. Я искал, как сумасшедший, и не нашел ничего, что работает ...

+1

[lyx] (http://www.lyx.org/)? – nmichaels

+0

Я не уверен, что понимаю недостаток форматирования, например, HTML (через онлайн-инструмент форматирования), а затем вставки в Word. Изменение размера шрифта после этого не должно вызывать никаких проблем. – VoteyDisciple

+1

Используйте латекс и пакет lstlistings, если вы хотите форматировать код. Слово - это ад. Вы должны это знать. С латексом вы можете изменить любой размер шрифта, который вам нужен, ваш код не будет двигаться. Черт, вы программируете Python, почему вы даже подумываете использовать Word? –

ответ

0

1) Следуйте рекомендациям PEP-8 и держите линии < 80 символов. Иногда это кажется очень трудным или неудобным. В этих случаях вы можете использовать до 90-95 символов. Более длинные строки, вероятно, являются результатом плохой конструкции кода или ошибочно выбранных имен переменных. (Есть люди, работающие со стандартными размерами до 120 символов, но, вероятно, они не пытаются опубликовать код в Word в портретном режиме).

2) Используйте моноширинный шрифт

3) Держите размер шрифта достаточно мал, чтобы обеспечить 80-95 символов в строке.

+0

Я разместил этот вопрос 2 года назад и никогда Пи (я не знал этикета StackOverflow). Поэтому я выбираю этот сейчас, так как это то, что я закончил. Я просто сохранил все мои высказывания менее 80 символов, и копирование и вставка в слова, похоже, все в порядке. Имейте в виду, я потратил много часов на все мои сценарии, переформатировал их так и повторил их, чтобы проверить, не ввел ли я какие-либо ошибки :) – Gary

0

Вы пытались использовать Word для черновиков текста? Вы всегда можете преобразовать его позже.

+0

jathanism, я не понимаю, что вы имеете в виду. У меня создается впечатление, что в текстовом документе нет форматирования. В любом случае мне придется вручную делать все отступы 1, 2, 3 уровня для всех фрагментов. И тогда, если я изменю размер шрифта/стиль в более позднее время, все отступы, скорее всего, getI позже должны будут внести изменения в размер и стиль шрифта, будь то в виде обычного текста или в .docx, а отступ кода, вероятно, не останется неизменным когда это произойдет. Также большая часть текста без кода уже была напечатана и отформатирована и ведет себя хорошо. Спасибо за предложение. – Gary

1

Напишите свой код в редакторе кода с поддержкой Python с подсветкой синтаксиса. Сохраните свои фрагменты. Сделайте скриншоты. Вставьте их в MS Word. Измените размер и обрезайте изображения по своему усмотрению.

Теперь все, что вам нужно сделать, это сразиться с MS Word на слове, обертывающем изображения, что может быть даже победой.

+0

MadKeithV, я избегал использования изображений, так как мы говорим более 200 фрагментов на 500 страницах документа Word. Это будет много изображений/скриншотов для работы. Также я не смогу изменить размер шрифта на снимках экрана. Спасибо за предложение tho. – Gary

0

Использование docutils.

Вместо борьбы с MS-Word (и другими редакторами WYSIWYG) гораздо проще использовать докуты.

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

  2. Запустите преобразование rst2html.py, чтобы создать красивые страницы HTML из вашего источника.

  3. Запустите преобразование rst2latex.py, чтобы создать LaTeX из вашего источника. Существует множество инструментов, которые могут создавать PDF-файлы из LaTeX.

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

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

+0

SLott, Спасибо за это. Ive никогда не использовал докутилы или латекс раньше, но описанная вами процедура звучит просто. Однако текст без кода в моем документе очень хорошо отформатирован, и все связано со стилями шрифта, даже с отдельными словами во многих предложениях, поэтому я могу потерять всю эту работу, если я начну с простого текста и прочитаю все 500 страниц снова :(.. Я буду изучать разметку RST tho, возможно, некоторые из форматирования без кода могут быть сохранены? Я также рассмотрю sphinx в соответствии с вашей рекомендацией. – Gary

+0

@Gary: все форматирование * без кода * может быть сохранен.Если для этого требуется слишком много классов расширения, рассмотрите это как признак того, что вы переработали свой документ. Но Sphinx использует богатую семантическую разметку, и вы можете разработать сопоставление от разметки к презентационным шрифтам и стили. –

+0

SLott, это здорово знать. Я обязательно дам этот шанс в выходные или на следующей неделе. Большое спасибо за это. Позвольте вам знать, как это происходит. – Gary

0

Я не использую слово, но в LibreOffice вы можете просто использовать форматирование абзаца - создать новый стиль абзаца для каждого уровня отступа (pycode, pycode_indent1...). Поместите все требуемое форматирование (одноранговое расстояние, интервал между абзацами и т. Д.) В стиле верхнего уровня и сделайте стили с отступом использовать его в качестве родителя. Затем просто добавьте соответствующие отступы в каждый из дочерних стилей. Это в основном та же идея, что и многоуровневый маркированный список, без пуль. Затем выберите соответствующий стиль абзаца абзаца для каждой строки (подсказка: вы можете выбрать несколько несмежных строк, используя ctrl + mouse в LibreOffice).

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