Табуляция и пробелы в списках: в чем разница и стоит ли это учитывать?

Табуляция и пробелы в списках: в чем разница и стоит ли это учитывать?

Это дополнительный вопрос кПроблема с пакетом Listings, касающаяся разрыва строк и неправильного выравнивания. Почему у меня возникают проблемы при копировании и вставке кода внутри lstlistingсреды? Стоит ли мне быть осторожным с табуляцией или пробелами в листингах? И если да, то почему? Как именно табуляция и пробелы влияют на горизонтальный интервал в исходном коде, набранном с помощью пакета listings?

решение1

Существуют и другие невидимые символы, кроме символа пробела (код ASCII 32); один из них —табулятор, он жесимвол табуляции(ASCII код 9), которые используются в некоторых типах исходных файлов; наиболее заметны, возможно, в makefiles. Для получения дополнительной информации о невидимых символах в целом, я отсылаю вас кСтраница Википедии об управляющих символах ASCII.

Пакет listingsобрабатывает пробелы и табуляторы совершенно по-разному, как поясняется в подразделе 2.5 документации listings.

Вы можете получить неожиданный вывод, если ваши источники содержат табуляторы. Пакет предполагает, что табулятор останавливается в столбцах 9, 17, 25, 33 и т. д. Это предопределено через tabsize=8. Если вы измените восемь на число n, вы получите табулятор останавливается в столбцах n+1, 2n+1, 3n+1 и т. д.

Если вы не хотите никаких сюрпризов и если ваш код может обойтись только пробелами и без табуляторов, то, вероятно, хорошей идеей будет придерживаться пробелов и полностью отказаться от табуляторов.

Я предполагаю, что вы используете LaTeX IDE, например texmaker, а не текстовый редактор, например emacs или vim. Скорее всего, ваша IDE по умолчанию вставляет символ табуляции при Tabнажатии клавиши, но должен быть способ настроить ее на вставку фиксированного количества пробелов (обычно 2, 4 или 8). Однако такая опция может не иметь обратной силы; другими словами, символы табуляции, которые уже присутствовали в вашем файле, не могут быть заменены пробелами просто при активации этой опции. Возможно, вам придется искать и заменять табуляции пробелами, чтобы избавиться от них всех. Это, возможно, подвержено ошибкам, но у вас может не быть других вариантов, если вы используете IDE. Однако...

Редактировать(после комментария Барбары Битон): ... редакторы, такие как emacs и vim, имеют встроенную функцию для эффективной замены всех табуляций на пробелы в текущем буфере. В emacs у вас есть untabify; в vim у вас есть retab(см.этот).

введите описание изображения здесь

Хорошие текстовые редакторы также позволяют делать невидимыми символы (табуляторы, символы новой строки и т. д.)видимый, чтобы вы знали, с каким типом невидимого символа вы на самом деле имеете дело. На рисунке выше (скриншот буфера vim) символ обозначает табулятор, а ¬символ обозначает новую строку.

Вот еще две причины отказаться от IDE и начать использовать текстовый редактор.:)

Обновлять: texmaker 4.2 (2014/05/01) теперь позволяет продвинутым пользователямрасширить функциональные возможности IDEзапустив пользовательский код Javascript изнутри. Это открывает дверь к скрипту "retab", но предполагает, что вы знаете немного Javascript.

Связанный контент