Emacs. Календарь
Использование календаря в 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 для перемещения точки к следующему появлению комбинации. Эти команды сообщают об ошибке, если набранная вами комбинация дат хааб/тцолкин невозможна.