Emacs. Календарь
2021-06-15
·
11 мин. для прочтения
Использование календаря в Emacs.
Содержание
1 Настройка
- Локализация для русского языка:
(setq calendar-week-start-day 1 calendar-day-name-array ["Воскресенье" "Понедельник" "Вторник" "Среда" "Четверг" "Пятница" "Суббота"] calendar-day-header-array ["Вс" "Пн" "Вт" "Ср" "Чт" "Пт" "Сб"] calendar-day-abbrev-array ["Вск" "Пнд" "Втр" "Сре" "Чтв" "Птн" "Суб"] calendar-month-name-array ["Январь" "Февраль" "Март" "Апрель" "Май" "Июнь" "Июль" "Август" "Сентябрь" "Октябрь" "Ноябрь" "Декабрь"] calendar-month-abbrev-array ["Янв" "Фев" "Мар" "Апр" "Май" "Июн" "Июл" "Авг" "Сен" "Окт" "Ноя" "Дек"])
2 Запуск
Для запуска календаря выполните M-x calendar.
3 Использование
3.1 Перемещение по календарю
Режим calendar позволяет перемещаться по календарю через логические промежутки времени, такие как дни, недели, месяцы и годы.
3.1.1 Перемещение по обычным календарным единицам
- Команды для перемещения в буфере календаря аналогичны командам для перемещения в тексте.
C-fперемещает на день вперед (calendar-forward-day).C-bперемещает на день назад (calendar-backward-day).C-nперемещает на неделю вперед (calendar-forward-week).C-pперемещает на неделю назад (calendar-backward-week).M-}перемещает на месяц вперед (calendar-forward-month).M-{перемещает на месяц назад (calendar-backward-month).C-x ]перемещает на год вперед (calendar-forward-year).C-x [перемещает на год назад (calendar-backward-year).
- Курcорные стрелки эквивалентны
C-f,C-b,C-nиC-p, как и в других режимах. - Команды принимают числовой аргумент в качестве счётчика повторов.
- Для удобства, в режиме Calendar цифры и знак минус задают числовой аргумент даже без модификатора Meta.
- Например,
100 C-fперемещает точку на 100 дней вперед от её текущей позиции.
3.1.2 Начало или конец недели, месяца или года
- Команды для перехода к началу или концу недели, месяца или года:
C-aпереход к началу недели (calendar-beginning-of-week).C-eпереход к концу недели (calendar-end-of-week).M-aпереход к началу месяца (calendar-beginning-of-month).M-eпереход к концу месяца (calendar-end-of-month).M-<переход к началу года (calendar-beginning-of-year).M->переход к концу года (calendar-end-of-year).
- Эти команды также принимают числовые аргументы в качестве счетчиков повторений, который указывает, на сколько недель, месяцев или лет нужно переместиться вперед или назад.
- По умолчанию недели начинаются с воскресенья. Чтобы сделать так, чтобы они начинались с понедельника, надо установить переменную
calendar-week-start-dayв значение 1.
3.1.3 Указанные даты
Команды для перехода к конкретной дате, которую можно задать многими способами.
g dперемещает точку к указанной дате (calendar-goto-date).- Запрашивает год, месяц и день месяца, а затем перемещает к этой дате.
- Необходимо вводить год полностью; то есть пишите `1990’, а не `90'.
oцентрирует календарь вокруг указанного месяца (calendar-other-month).- Запрашивает месяц и год, а затем центрирует трехмесячный календарь вокруг этого месяца.
.перемещает к сегодняшней дате (calendar-goto-today).
3.2 Прокрутка календаря
Изображение календаря автоматически прокручивается, когда вы сдвигаетесь за пределы видимой части. Можно также прокручивать его вручную.
C-x <прокручивает календарь на один месяц вперед (scroll-calendar-left).C-x >прокручивает календарь на один месяц назад (scroll-calendar-right).C-vилиNEXTпрокручивает календарь на три месяца вперед (scroll-calendar-left-three-months).M-vилиPRIORпрокручивает календарь на три месяца назад (scroll-calendar-right-three-months).
3.3 Подсчёт дней
M-=выводит число дней в текущей области (calendar-count-days-region). Количество дней выводится включительно; то есть дни, указываемые точкой и меткой, учитываются.
3.4 Другие команды календаря
p dвыводит номер дня в году (calendar-print-day-of-year).C-c C-lзаново генерирует окно календаря (redraw-calendar).SPCпрокручивает следующее окно (scroll-other-window).qвыходит из календаря (exit-calendar).
3.5 \(\LaTeX\) и календарь
- Команды календаря для работы с \(\LaTeX\) генерируют буфер с \(\LaTeX\)-кодом, который печатает календарь.
t mгенерирует календарь на один месяц (cal-tex-cursor-month).t Mгенерирует горизонтальный календарь на один месяц (cal-tex-cursor-month-landscape).t dгенерирует календарь на один день (cal-tex-cursor-day).t w 1генерирует одностраничный календарь на одну неделю (cal-tex-cursor-week).t w 2генерирует двухстраничный календарь на одну неделю (cal-tex-cursor-week2).t w 3генерирует календарь в стиле ISO на одну неделю (cal-tex-cursor-week-iso).t w 4генерирует календарь на одну неделю, начинающуюся с понедельника (cal-tex-cursor-week-monday).t f wгенерирует двухнедельный календарь на одной странице в стиле Filofax (cal-tex-cursor-filofax-2week).t f Wгенерирует недельный календарь на одной странице в стиле Filofax (cal-tex-cursor-filofax-week).t yгенерирует календарь на один год (cal-tex-cursor-year).t Yгенерирует горизонтальный календарь на один год (cal-tex-cursor-year-landscape).t f yгенерирует календарь на один год в стиле Filofax (cal-tex-cursor-filofax-year).
- В зависимости от использованой команды напечатанный календарь покрывает день, неделю, месяц или год, в котором находится точка.
- Если переменная
cal-tex-holidaysне равнаnil(это значение по умолчанию), то печатаемые календари показывают праздники изcalendar-holidays. - Если переменная
cal-tex-diaryотлична отnil(по умолчанию этоnil), также включаются записи из дневника (только в недельные и месячные календари). - Если отлична от
nilпеременнаяcal-tex-rules(по умолчаниюnil), то в тех стилях распечатки календаря, где достаточно места, страницы разлинованы.
3.6 Праздники
- Календарь Emacs может отображать праздники.
hпоказать праздники, приходящиеся на выбранную дату (calendar-cursor-holidays).Mouse-2 Holidaysпоказать все праздники для даты, на которой вы щелкнули.xпометить праздники (mark-calendar-holidays).uснять метки в окне календаря (calendar-unmark).aперечислить в другом окне все праздники для показанных трех месяцев (list-calendar-holidays).M-x holidaysперечислить в другом окне все праздники для трех месяцев вокруг текущей даты.M-x list-holidaysПеречислить в другом окне праздники для заданного промежутка лет.- Выводит список праздников для нескольких лет.
- Запрашивает начальный и конечный год и позволяет выбрать все праздники или одну из их категорий.
- Известные Emacs праздники включают праздники США и основные христианские, иудейские и исламские праздники; также он знает о солнцестояниях и равноденствиях.
3.7 Время восхода и заката Солнца
- Команды календаря могут сообщить вам с точностью до минуты-двух времена восхода и заката Солнца для любой даты.
Sпоказывает времена восхода и заката Солнца для выбранной даты (calendar-sunrise-sunset).Mouse-2 Sunrise/Sunsetпоказывает времена восхода и заката Солнца для даты, на которой вы щёлкнули.M-x sunrise-sunsetпоказывает времена восхода и заката Солнца для сегодняшней даты.C-u M-x sunrise-sunsetпоказывает времена восхода и заката Солнца для заданной даты.C-u C-u M-x sunrise-sunsetпоказывает времена восхода и заката Солнца для любой местности и даты.- Запрашивает широту, долготу, разницу от универсального координированного времени и дату, а затем сообщает вам времена восхода и заката для этого места и этой даты.
- Поскольку время восхода и заката Солнца зависит от положения на Земле, перед использованием этих команд необходимо указать Emacs широту, долготу и название местности. Вот пример задаваемых значений:
(setq calendar-latitude 40.1) (setq calendar-longitude -88.2) (setq calendar-location-name "Urbana, IL") - Задавайте значения
calendar-latitudeиcalendar-longitudeс точностью до одной десятой. - Часовой пояс также влияет на время восхода и заката.
- Обычно Emacs получает информацию о часовом поясе от операционной системы.
- Можно установить их самим:
(setq calendar-time-zone -360) (setq calendar-standard-time-zone-name "CST") (setq calendar-daylight-time-zone-name "CDT") - Значение
calendar-time-zone— это разница между местным стандартным и универсальным координированным (гринвичским) временем, выраженная в минутах. - Значения
calendar-standard-time-zone-nameиcalendar-daylight-time-zone-name— это сокращения, принятые для обозначения вашего часового пояса.
3.8 Фазы Луны
Даты и времена лунных фаз (новолуние, первая четверть, полнолуние, последняя четверть).
Mвыводит даты и времена всех четвертей Луны для показанного трехмесячного периода (calendar-phases-of-moon).M-x phases-of-moonвыводит даты и времена четвертей Луны для трех месяцев вокруг сегодняшней даты.
3.9 Преобразование в другие календарные системы и из них
- В Emacs всегда показывается григорианский календарь.
- Хотя Emacs не может показывать другие календари, он умеет преобразовавать даты из нескольких других календарных систем.
- Поддерживаемые календарные системы:
- Коммерческий календарь ISO используется в основном в Европе.
- Юлианский календарь, названный в честь Юлия Цезаря, использовался в Европе в средние века и во многих других странах вплоть до девятнадцатого века.
- Астрономы используют простой подсчет дней, истекших от полудня понедельника, первого января, 4713-го года до нашей эры по юлианскому календарю. Число прошедших дней называется юлианским или астрономическим номером дня.
- Иудейский календарь по традиции используется в еврейской религии.
- Исламский календарь используется во многих мусульманских странах.
- Календарь французской революции был создан якобинцами после революции 1789-го года для введения более светского и основанного на представлениях о природе взгляда на годовой цикл и для установления десятидневной недели, более рационалистической, как метрическая система. Французское правительство официально отменило этот календарь в конце 1805-го года.
- Центральноамериканские Майя использовали три разные, перекрывающиеся календарные системы, долгий счет, тцолкин и хааб.
- Копты используют календарь, основанный на древнеегипетском солнечном календаре. Он состоит из двенадцати тридцатидневных месяцев, за которым идет дополнительный пятидневный период. Раз в четыре года к этому периоду добавляется шестой, високосный день. Эфиопский календарь обладает такой же структурой, но в нем другие номера лет и названия месяцев.
- Персы используют солнечный календарь, основанный на разработках Омара Хайама. Их календарь состоит из двенадцати месяцев, первые шесть из которых содержат 31 дней, следующие пять – 30 дней, а в последнем 29 дней в обычные года и 30 дней в високосные. Високосные года случаются по сложному образцу каждые четыре или пять лет.
- Китайский календарь – это сложная система лунных месяцев, скомбинированных с солнечными годами. Годы проходят по циклам из шестидесяти лет, обычный год содержит 12 месяцев, високосный – 13; в каждом месяце либо 29, либо 30 дней. Каждый год, обычный месяц и день именуется комбинацией одного из десяти “небесных стеблей” и одной из двенадцати “земных ветвей”, в общей сложности есть шестьдесят имен, которые проходят по кругу.
3.9.1 Преобразование в другой календарь
Следующие команды описывают выбранную дату (дату, в которой находится точка) в различных календарных системах:
Mouse-2 Other Calendarsвыводит дату, на которой вы щелкнули, выраженную через различные другие календари.p cвыводит эквивалент выбранного дня в коммерческом календаре ISO (calendar-print-iso-date).p jвыводит юлианскую дату для выбранного дня (calendar-print-julian-date).p aвыводит астрономический (юлианский) номер дня для выбранной даты (calendar-print-astro-day-number).p hпоказывает иудейскую дату для выбранного дня (calendar-print-hebrew-date).p iпоказывает исламскую дату для выбранного дня (calendar-print-islamic-date).p fпоказывает французскую революционную дату для выбранного дня (calendar-print-french-date).p Cпоказывает китайскую дату для выбранного дня (calendar-print-chinese-date).p kпоказывает коптскую дату для выбранного дня (calendar-print-coptic-date).p eпоказывает эфиопскую дату для выбранного дня (calendar-print-ethiopic-date).p pпоказывает дату персидского календаря для выбранного дня (calendar-print-persian-date).p mпоказывает дату календаря Майя для выбранного дня (calendar-print-mayan-date).
3.9.2 Преобразование из другого календаря
- Вы можете использовать поддерживаемые календари для задания даты, к которой следует переместиться.
g cпереход к дате, заданной в коммерческом календаре ISO (calendar-goto-iso-date).g jпереход к дате, заданной в юлианском календаре (calendar-goto-julian-date).g aпереход к дате, заданной астрономическим (юлианским) номером дня (calendar-goto-astro-day-number).g hпереход к дате, заданной в иудейском календаре (calendar-goto-hebrew-date).g iпереход к дате, заданной в исламском календаре (calendar-goto-islamic-date).g fпереход к дате, заданной во французском революционном календаре (calendar-goto-french-date).g Cпереход к дате, заданной в китайском календаре (calendar-goto-chinese-date).g pпереход к дате, заданной в персидском календаре (calendar-goto-persian-date).g kпереход к дате, заданной в коптском календаре (calendar-goto-coptic-date).g eпереход к дате, заданной в эфиопском календаре (calendar-goto-ethiopic-date).
- Команды запрашивают дату из другого календаря, перемещают точку к эквивалентной дате григорианского календаря и показывают дату другого календаря в эхо-области.
3.9.3 Преобразование из календаря Майя
- Команды для выбора дат, оснаванных на календаре Майя:
g m lпереходит к дате, заданной календарем долгого счета (calendar-goto-mayan-long-count-date).g m n tпереходит к следующему появлению некоторого места в календаре тцолкин (calendar-next-tzolkin-date).g m p tпереходит к предыдущему появлению некоторого места в календаре тцолкин (calendar-previous-tzolkin-date).g m n hпереходит к следующему появлению некоторого места в календаре хааб (calendar-next-haab-date).g m p hпереходит к предыдущему появлению некоторого места в календаре хааб (calendar-previous-haab-date).g m n cпереходит к следующему появлению некоторого места в календарном круге (calendar-next-calendar-round-date).g m p cпереходит к предыдущему появлению некоторого места в календарном круге (calendar-previous-calendar-round-date).
- Чтобы понять эти команды, нужно понимать календари Майя. Долгий счет – это подсчёт дней в следующих единицах:
- 1 кин = 1 день
- 1 уинал = 20 кин
- 1 тун = 18 уинал
- 1 катун = 20 тун
- 1 бактун = 20 катун
- Таким образом, дата 12.16.11.16.6 в долгом счете означает 12 бактун, 16 катун, 11 тун, 16 уинал и 6 кин. Календарь Emacs может обрабатывать майянские даты долгого счета от 7.17.18.13.1, но не более ранние. Когда вы используете команду g m l, набирайте майянскую дату долгого счета, разделяя бактун, катун, тун, уинал и кин точками.
- Майянский календарь тцолкин – это цикл из 260 дней, формируемый парой независимых циклов из 13 и 20 дней. Поскольку этот цикл повторяется бесконечно, Emacs предоставляет команды для перемещения назад и вперед к предыдущей или следующей точке цикла. Наберите g m p t, чтобы перейти к предыдущей дате в тцолкин; Emacs спросит у вас дату в тцолкин и переместит точку к предыдущему появлению этой даты. Аналогично, наберите g m n t, чтобы перейти к следующему появлению даты в тцолкин.
- Майянский календарь хааб – это цикл из 365 дней, собранный из 18 месяцев по 20 в каждом, за которыми следует пятидневный период без месяца. Подобно циклу тцолкин, этот цикл повторяется бесконечно, и есть команды для перехода назад и вперед к предыдущей или следующей точке этого цикла. Наберите g m p h, чтобы перейти к предыдущей дате хааб; Emacs спросит у вас дату в хааб и переместит точку к предыдущему появлению этой даты. Аналогично, наберите g m n h, чтобы перейти к следующему появлению даты в хааб.
- Майя также использовали комбинацию дат тцолкин и хааб. Эта комбинация — цикл примерно в 52 года, назыавемый календарным кругом. Если вы наберете g m p c, Emacs спросит у вас даты хааб и тцолкин и затем переместит точку к предыдущему появлению этой комбинации. Используйте g m n c для перемещения точки к следующему появлению комбинации. Эти команды сообщают об ошибке, если набранная вами комбинация дат хааб/тцолкин невозможна.