Предстоит написать эссе на экзамене по английскому? В этой статье мы расскажем, как это сделать правильно и с учетом специальных стандартов и требований.
Это обычное задание на ОГЭ, при поступлении, в вузе, TOEFL, IELTS и др. Оно хорошо оценивается, ведь писать на иностранном языке на сложные и философские темы непросто. При этом нужно еще правильно изложить свою точку зрения, убедить, что вы можете рассуждать и знаете язык.
Важное условие хорошей работы и половина успеха — уверенное владение письменной речью. Этот навык развивается. Об этом мы подробно расскажем в конце статьи.
For and against essays. За или против. В основной части автор предлагает аргументы, занимает нейтральную позицию. В заключении можно высказать свое отношение по вопросу.
Opinion essays. Мнение. В любом виде работы вы выражаете мнение, но только в этом случае вы рассматриваете проблему с разных сторон. Важно затронуть все аспекты проблемы.
Suggesting solutions to problem essays. Решение проблемы. Перед вами высказывание, которое содержит в себе проблему. Ваша задача — найти варианты ее решения.
Важно заранее думать над темой и за это время собрать материал. Если думать больше, будет проще и легче находить решения. Вы яснее воспринимаете ту или иную информацию.
Кажется, что вы понятия не имеете, о чем писать? Успокойтесь, набросайте эскизы того, что вы хотите сказать. Такая практика помогает вытащить из памяти важные знания, придумать оригинальные идеи и составить план дальнейших действий.
Очень важно на подготовительном этапе сформулировать вопросы, на которые нужно ответить. Не переживайте, если они кажутся вам общими: конкретные придут в процессе написания. Просто начните.
Самое сложное в любой письменной работе — начать. Справиться с этой задачей помогает фрирайтинг (свободное письмо). Вы просто пишете все, что приходит в голову. Первое время на орфографию, стилистику и пунктуацию можно не обращать внимания, ведь именно в большинстве случаев они только мешают.
Записывайте все, даже самые безумные мысли, а потом разберетесь, как пишется правильно.
На компьютере печатать проще, так как потом отдельные его части можно менять местами в зависимости от смысла. Если вы пишете от руки, то оставляйте пространство между строчками, потом допишете.
Можно поступить так: разрезать лист с написанным на полоски и попробовать их скомпоновать так, чтобы логика изложения не нарушалась. Если вы четко видите структуру: вводную, основную и заключительную часть — эксперимент прошел успешно.
Это небольшое сочинение на заданную тематику. Его объем варьируется от 180 до 320 слов. Точное количество можно узнать лично у преподавателя или в специальной методичке. Оно зависит от типа экзамена: есть международный, национальный, внутривузовский и др.
Структура от типа экзамена не зависит. Она включает:
- название;
- вводную часть. От 2 до 4 предложений, раскрывающих название;
- основную часть. Несколько абзацев, где приводятся доводы и аргументы;
- заключительную часть. До 4-х предложений, где подводят итоги и делают один вывод.
Здесь важно обозначить тему. Так как она сформулирована в заголовке, то во введении ее нужно переписать с помощью синонимов.
Укажите все существующие мнения на проблему, не описывайте только свое к ней отношение.
Для описания используйте нейтральные конструкции, которые будут указывать на объективность.
Во введении раскрывают ключевое понятие, указывают, какие аспекты будут рассмотрены.
Примеры, как начать писать эссе на английском:
Здесь автор делится соображениями по теме. Важно, чтобы доводы и аргументы приводились строго последовательно. Примеры должны подтверждать сказанное и иллюстративно его выражать.
Обязательны различные мнения и суждения, отличные от авторских. Нужно обозначить, по каким пунктам вы не согласны, привести весомые доказательства и примеры.
Весь текст нужно поделить на логические абзацы. Последние предложения служат плавной подводкой к заключению.
Фразы-клише для основы:
Подытожьте и заверьте, что все сказанное вами, верно. Если вы не можете или не хотите давать четкий ответ, можно ответить уклончиво, но с указанием перспектив и последствий обсуждаемой проблемы.
Желательно закончить эссе перечислением идей, опираясь на введение. Но не повторяйтесь, а постарайтесь выразить мысль по-другому.
Делать выводы сложнее всего. По ним можно понять, насколько вы умеете мыслить критически, выделять главное и отсекать ненужное.
Для этого есть фразы:
Мы уже говорили об орфографических и пунктуационных ошибках, которых быть не должно. Проверить текст на грамотность можно с помощью сервиса text.ru.
Помните: новый абзац — новый аспект. При этом, абзацы могут касаться разных аспектов, но связываться по смыслу. Например, в одном из них будут перечислены положительные стороны чего-либо, а в другом — отрицательные.
Первому предложению отводится роль вводного, в нем сообщают, о чем будет речь дальше.
За связность отвечают вводные конструкции и специальные связующие слова, которые отвечают за различные функции:
- противопоставляют. On the other hand, but;
- дополняют. In addition, moreover, similarly;
- перечисляют. After that, then;
- дают пример. That is, for example;
- делают заключение. Consequently, as a result.
Если вы хотите подтвердить написанное цитатой или ссылкой, вы обязательно должны указать ее автора и дату публикации первоисточника. Это касается прямого и косвенного цитирования.
Образец:
По мнению Оливера (2004) все, что нам остается, пока наша планета болтается где-то в космосе — расслабиться и любить друг друга.
или: Все, что нам остается, пока наша планета болтается где-то в космосе — расслабиться и любить друг друга (Оливер 2004).
Все еще думаете, как писать эссе по английскому? Все просто: вы разберитесь в материале и имейте при себе четкий план.
Вторая половина успеха — умение придерживаться нужного стиля. Это значит, что в работе вы используете простые и легкие выражения, минимум терминологии и тяжелой лексики, не допускаете ошибок.
Всегда учитывайте различия устной и письменной речи. Добавьте побольше прилагательных и наречий, так как они делают текст эмоциональнее.
Еще несколько стилистических советов:
- придерживайтесь академического стиля письма. Без местоимений, обобщений и с минимумом глаголов;
- избегайте средств, которые используются в разговорной речи. Например, не сокращайте вот так: it’s. don’t, aren’t и т. д.;
- будьте объективны. В этом помогут безличные конструкции, пассивный залог, модальные глаголы;
- убедитесь, что текст связный. Переходите от мысли к мысли плавно.
- Следуйте структуре. Здесь важно сразу определить тип работы и составить подробный план. Идите от пункта к пункту структуры: так вы ничего не пропустите.
- Заведите черновик. В нем можно тезисно набросать мысли, которые послужат основой для будущего текста. Своеобразный брейншторм поможет нащупать верную нить и составить план оформления эссе.
- Готовьтесь к любому заданию. В этом деле поможет чтение книг, запоминание новых слов.
- Учитывайте время, необходимое для проверки. Ошибки в работе не приветствуются, а за аккуратные исправления никто баллы не снижает.
- Выберите стиль. Любой шаблон строится на полуформальном или, в некоторых случаях, формальном стиле. Можете почитать, чем эти стили различаются. Без сленга и сокращений.
- Пишите по делу. Пространные описания не работают и только снижают баллы.
- Аргументируйте. Один сильный аргумент сильнее десятка красивых выражений. К тому же, аргументы подтвердят, что вы ориентируетесь в материале.
- Связывайте части специальными словами. Они показывают контраст и последовательность мыслей. На сайте Speakasap.com можно посмотреть список.
- Экспериментируйте с лексикой и грамматикой. Добавьте в больше синонимов, сложных конструкций, которые покажут ваш уровень владения языком.
- Будьте корректны. Уходите от спорных моментов (политика, религия и др.), обсуждение которых может задеть чьи-то чувства. Если высказаться очень хочется, делайте это толерантно.
- Не нужно категоричности. Конструкция типа «я уверен, что…», «я знаю, что…» заменяйте на «мне кажется, что…», «я думаю, что…».
- Не используйте сокращения. Do not вместо don’t.
- Избегайте конструкций there is/there are.
- Забудьте на время о словах very, really, so, a lot.
- Следите за соотношением пассивного и активного залога.
- Используйте сильные глаголы: вместо he gave assistance my friend лучше писать he assisted my friend.
И еще один бонусный совет: эссе на английском языке в 2021 году будет отличаться от того, что писали в 2020. В первую очередь, оформлением. Поэтому брать готовое из интернета не рекомендуем.
Если у вас возникли сложности с написанием, обращайтесь за помощью к экспертам Studently.
-
#281
У меня два, а у кого-то пять.
Вклад одинаковый, результат разный.
И это нормально!
Сегодня у Вас меньше чем у кого-то, завтра наоборот
В таких играх должно быть предупреждение раз, они должны облагаться 90 процентным налогом два.
И ряд других ограничений должен быть, чтобы разрабы думали над тем как сделать игру интересной для людей, а не паразитировать на зависимостях.
Если подобные элементы будут приравнены к азартным играм то
1. во многих странах такие игры будут запрещены автоматически: мало стран где казино официально разрешено!
2. это будет крахом всех механик: случайная награда пронизывает многие игры «от и до»!
Элемент случайной награды давно используется в различных ролевых и карточных играх, а наборы с картами никого не смущали долгие годы.
В ФоЕ например это и ЭГ и ПБГ… если сделают выпадения не случайными, а строго по порядку по списку (-,-,П1,П2,П3 и по кругу)
то играть будет намного менее интересно.
Следовательно либо игры лишатся рандома, либо станут не только платными но и дорогими (раз налог станет 90%).
Либо их сразу закроют чтобы не рисковать.
-
#282
И кстати на данный момент в ФоЕ всё законно!
1. На реальные деньги обменять выигрыш нельзя
В Нидерландах через суд были запрещены любые лутбоксы в футбольном симуляторе от EA.
Основная претензия заключалась в том, что предметы из этих паковможно продавать
не только внутри игры, но и на сторонних сайтах,
получая за это монеты
.
Такая система переносит игровые развлечения в реальный мир и приравнивает ФИФУ к настоящему казино.
2. Не указывались шансы выпадения из-за чего нелдьзя было оценить смысл траты декнежных средств.
В Китае пошли по другому пути. Они решили полностью такую систему не запрещать, но обязывают разработчиков честно писать шанс выпадения того или иного предмета
-
#283
А сколько саней хватает для производств текущей эпохи в ивентах, чтобы не слишком долго делать задание?
-
#284
А сколько саней хватает для производств текущей эпохи в ивентах, чтобы не слишком долго делать задание?
Это зависит от вашей активности, от количества посещений игры за сутки.Например, тем ,кто весь день в инете в силу разных обстоятельств и могут заглядывать каждый час, даже 6 штук с лихвой хватит.А некоторым и 30-ти мало…Что для вас значит ,,не слишком долго,,?
-
#285
Это зависит от вашей активности, от количества посещений игры за сутки.Например, тем ,кто весь день в инете в силу разных обстоятельств и могут заглядывать каждый час, даже 6 штук с лихвой хватит.А некоторым и 30-ти мало…Что для вас значит ,,не слишком долго,,?
Ну, хотя бы за пару дней пройти такое задание. Обычно могу заходить на фермы время от времени. Вроде дают только завершить производство столько-то раз текущей эпохи, а не конкретно 1 час, 4, 8… На такие можно и колодцы использовать. Но я, вообще-то, на фермах, кроме Кунрира, дальше не собираюсь проходить ивенты, может когда-нибудь. Думал зимний пройти и всё, правда надеялся на колодцы, а тут облом. Ладно, днем разберусь, по несколько шт выбью и хватит.
-
#286
Ладно, днем разберусь, по несколько шт выбью и хватит.
Без брюлей, при среднестатистическом везении с примерно 450 звездочек(задания выполнены все и ничего не тратили) можно рассчитывать на 3-5 санок. Выборка из 5 экспериментов.
-
#287
Вроде дают только завершить производство столько-то раз текущей эпохи, а не конкретно 1 час, 4, 8… На такие можно и колодцы использовать.
Колодцы не подходят для выполнения заданий «завершить столько-то производств текущей эпохи».
Подходят только здания (обычные и ивентовые), где есть выбор — 5 мин, 15 мин, 1 час и т.д.
Какой при этом был выбор — роли не играет.
P.S. нормальная практика — дождаться запущенного ранее сбора с таких зданий, а потом «добить» до нужного количества 5-минутными запусками.
-
#288
А сколько саней хватает для производств текущей эпохи в ивентах, чтобы не слишком долго делать задание?
Я в жв, у меня 5 кузнецов и 0 саней. А в других мирах Будка и там 18/20 своей прошлой.
-
#289
Я в жв, у меня 5 кузнецов и 0 саней. А в других мирах Будка и там 18/20 своей прошлой.
шедевры лучше
ИМХО
-
#290
Я в жв антиквара нет
да и пофигу на него, там всё равно 99% мусора
-
#291
Без брюлей, при среднестатистическом везении с примерно 450 звездочек(задания выполнены все и ничего не тратили) можно рассчитывать на 3-5 санок. Выборка из 5 экспериментов.
Это у каждого индивидуально, если повезет, можно и больше, а если не повезет, можно и меньше.
-
#292
Колодцы не подходят для выполнения заданий «завершить столько-то производств текущей эпохи».
Подходят только здания (обычные и ивентовые), где есть выбор — 5 мин, 15 мин, 1 час и т.д.
Какой при этом был выбор — роли не играет.P.S. нормальная практика — дождаться запущенного ранее сбора с таких зданий, а потом «добить» до нужного количества 5-минутными запусками.
Я в курсе, что колодцы не производства, но не помню, как такое написал, походу о чем-то другом думал. У меня такое бывает, руки пишут одно, а я о другом думаю и оно сочетается. Уже не раз согам что-то напишу, потом через некоторое время перечитаю и думаю, как я это написал, хотел же другое(( Ааа, вспомнил, я хотел написать «На такие можно и кузнецов использовать». То есть если 1ч, 4ч и т.д., а завершить производство текущей или пред. эпохи там без разницы, я обычно 5м делаю.
-
#293
Я в жв, у меня 5 кузнецов и 0 саней. А в других мирах Будка и там 18/20 своей прошлой.
Ну, тогда 4-5 вполне хватит, у меня в 13 мирах Прогресс, в одном Новейшее и в Кунрире ЖВ, но в Кунрире сани еще не нужны. Но я сани на будущее хочу, вдруг когда-то еще пройду ивент на фермах.
-
#294
Лучше, но их еще поймать нужно, я на фермах их почти не вижу, а если увидеть. потом еще сидеть, мониторить таймер, а кто-то может еще влепить огромную сумму монет, у меня на фермах немного, я колодцы покупаю. Та что сани хороший вариант, когда в эпохе производства занимают огромное место и требуют двухполосную.
-
#295
На такие можно и кузнецов использовать
Опять вы потеряли свою мысль.
Речь шла о производствах своей эпохи.
Кузнецы годятся — только если вы в ЖВ.
Если в РС — Кузнецы подойдут для варианта «предыдущей эпохи». Но такая альтернатива есть не всегда — иногда требуются только производства своей эпохи с какой-нибудь крайне неудобной альтернативой.
Поэтому Шедевры, Затонувшие сокровища и Строители саней — незаменимы.
-
#296
Кузнецы годятся — только если вы в ЖВ.
?? я в Венере и у меня 12 кузнецов, нужны для выполнения круговых заданий по 4-х и 8-ми часовым ресурсам, мало места просто занимают ….
-
#297
Если в РС — Кузнецы подойдут для варианта «предыдущей эпохи».
Не подойдут
У меня есть мир с городом ЖВ… и кузнецы не подходят в задания «своей эпохи»
-
#298
ЦИТИРУЮ
Речь шла о производствах своей эпохи.
Просто Старый Пэр сам тоже сегодня запутался.
-
#299
Опять вы потеряли свою мысль.
Речь шла о производствах своей эпохи.
Кузнецы годятся — только если вы в ЖВ.
Если в РС — Кузнецы подойдут для варианта «предыдущей эпохи». Но такая альтернатива есть не всегда — иногда требуются только производства своей эпохи с какой-нибудь крайне неудобной альтернативой.Поэтому Шедевры, Затонувшие сокровища и Строители саней — незаменимы.
На этот раз ничего не потерял, потому что речь шла о 1ч, 4ч и т.д. производствах и кузнецы как раз для них.
-
#300
На этот раз ничего не потерял
И как обсуждение из
А сколько саней хватает для производств текущей эпохи в ивентах, чтобы не слишком долго делать задание?
скатилось к
речь шла о 1ч, 4ч и т.д. производствах и кузнецы как раз для них
?!
Ваш ответ
Ааа, вспомнил, я хотел написать «На такие можно и кузнецов использовать»
также не подходит к ответу Вам
Колодцы не подходят для выполнения заданий «завершить столько-то производств текущей эпохи».
Подходят только здания (обычные и ивентовые), где есть выбор — 5 мин, 15 мин, 1 час и т.д.
Где Старый Пэр коротко и ясно пытался объяснить Вам что в задания на производства подходят только те здания где есть выбор этого самого производства — то есть те которые являясь ивентовыми зданиями при этом являются и производственными (Строитель саней, Яблочный пресс, Затонувшие сокровища, Шедевр и более ранний хлам более крупного размера)
Когда Жиль Кастель задокументировал метод ведения математических записей в Vim в реальном времени, многие захотели добиться тех же скорости и удобства ввода LATEX в Emacs1.
Я работаю на LaTeX весь день: уравнения пишу так же быстро, как на бумаге. И даже быстрее. Почему? За размышлением всегда следует работа пальцев. И это — та ситуация, когда количество переходит в качество. Хотя мои рекомендации — лишь 90 % решения.
Когда математические записи ведутся достаточно быстро, чтобы этот этап работы пальцев исчез (или так же быстро, как это делают у классной доски), тогда открываются новые возможности. Запись уроков по техническим предметам в цифровой архив с гиперссылками, индексированием и/или возможностью поиска становится автоматической — не нужно выделять на это время. А письменная коммуникация упрощается: полностью отформатированное, простое для парсинга электронное письмо или сообщение создаётся быстро и без усилий. При публикации материала намного быстрее цикл «написать → проверить → переписать», а значит — больше итераций и обратной связи.
Ввод LaTeX для нетерпеливых
Смотрите примеры ниже:
Матрицы в спешке:
Типичное выражение:
Просто дайте мне код
Рассмотрим компоненты редактирования LaTeX в Emacs и функции для ускорения текстового и математического ввода. Цель — сделать его таким же быстрым, как ввод обычного текста или написание уравнений на бумаге. Достаточно хотя бы, чтобы делать быстрые записи. Инструменты смотрите в оглавлении (справа или ниже) или в демо.
Кодом конфигурации в едином файле — здесь — будут установлены три пакета Emacs: AucTeX, CDLaTeX и YaSnippet, но без YaS-сниппетов. Я беру сниппеты отсюда, но рекомендую писать те, которые подходят вам. Одна из функций в этом коде для быстрого ввода на LaTeX таблиц или массивов доступна в отдельном пакете.
Состояние редактирования LaTeX в Emacs
Редактирование LaTeX в Emacs в моём понимании:
В центре — структура документа в TeX: дерево документа, текст и плавающие элементы, класс и стиль документа, перекрёстные ссылки и цитаты, другие метаданные и версии документа2. А вокруг — островки, нужные при использовании текстового редактора для создания этого документа: ввод и редактирование текста, навигация по документу, внешний вид, статический анализ кода и компиляция. Стрелки между островками — это пакеты Emacs, библиотеки или их функционал, позволяющие выполнять или ускорять эти задачи.
По многим элементам этой карты лучше обратиться к кому-нибудь, кто написал 1–2 книги по Emacs. Перед вами не исчерпывающее руководство по редактированию LaTeX в Emacs, а рекомендации по его ускорению, чтобы делать быстрые записи.
Главный акцент сделан на блоке Text Input (ввод текста) с быстрыми переходами в разделы Appearance (внешний вид) и Text Editing (редактирование текста). Хотите полную картину? Начните с руководства по AucTeX (C-h i m auctex
в Emacs). Вполне удобное для восприятия и — если у вас есть редкий ген, позволяющий переваривать руководства, — довольно приятное! По причине моего невежества в этой схеме нет пары важных элементов:
- Digestif — языковой сервер для LaTeX. Вместе с Eglot или LSP он должен выполнять многие из этих задач: перекрёстные ссылки, цитаты, статанализ кода, автозавершение и т. д.
- Xenops — полный набор инструментов поверх AucTeX, в котором этот функционал собран в единый пакет, устанавливаемый и используемый без настройки. Кроме того, в него добавлена поддержка грамотного программирования.
С более удобными или быстрыми способами выполнения других задач можно ознакомиться по ссылкам на схеме.
В следующей статье этой серии рассмотрим блок Text Editing (редактирование текста). В отличие от блока ввода он связан прежде всего с манипулированием имеющейся структурой документа без значительного добавления к ней чего-либо. Завершим серию совершенно другим набором инструментов, нежели те, о которых пойдёт речь сейчас.
Основные составляющие
Здесь нам нужно лишь несколько ингредиентов и Emacs. Создаём окружение ввода текста в три этапа:
- В AucTeX — основе редактирования LaTeX (а также в ConText) в Emacs — есть команды и второстепенные режимы для всех аспектов создания документов со всеми составляющими. Много лет я был полностью доволен скоростью ввода текста и удобством редактирования с помощью AucTeX.
- CDLaTeX — набор команд и удобных функций для уменьшения объёма ввода. Это один из самых больших секретов Emacs и секретный соус нашего рецепта.
- YaSnippet — пакет Emacs для вставки сниппетов, т. е. шаблонов с полями для заполнения. Он применяется много для чего ещё и не очень удачно дублирует функционал CDLaTeX. Но что поделаешь? Сразу же с ним и разберёмся: поисковик обычно выдаёт в результатах
Yasnippet
и более современные пакетыauto-activating-snippets
. Хотя я используюYasnippet
в демо выше (и ниже), интенсивно применять разворачивающиеся сниппеты, чтобы ускорить редактирование LaTeX, — неправильный подход. Подробнее об этом — позже.
Остальные пакеты в блоке Text Input (ввод текста) в основном перекрываются по функциям с вышеуказанными:
tempo
,skeleton
иabbrev
придают вкус вставки или расширения шаблона. Но это же делают YaSnippet и CDLaTeX, и даже гораздо больше этого.- AucTeX предоставляет
capfs
илиcompletion-at-point
(завершение в точке), но он нужен редко из-за того, каким образом вводится текст. Если нужно завершить ключевое слово? Вызывайтеcompletion-at-point
или используйте один из многочисленных пакетов, выступающих в роли фронтендов, напримерcompany-mode
илиcorfu
. auto-activating-snippets
(автоматически активирующиеся сниппеты) и его расширениеLaTeX-auto-activating-snippets
— это более чистая и быстрая реализация конкретной функциональности, для которой используется YaSnippet. Если бы начать всё сначала, я выбрал бы их, так что ознакомьтесь с ними.LaTeX-math-mode
(часть AUCTeX) — это метод эффективной вставки математических символов. Но у CDLaTeX это получается лучше.
Итак, начинаем с AucTeX, добавляем CDLaTeX и сверху ещё YaSnippet. Добавляя эти пакеты, увеличиваем скорость ввода LaTeX, но конструкция становится похожей на Пизанскую башню. Первые два я использую давно, а YaS добавил несколько лет назад и сейчас уже устранил большинство багов в системе. Тем не менее будьте бдительны.
Всё готово? Тогда поехали.
Вниманию пользователей org-mode
Org-mode имеет очень хорошую поддержку ввода LaTeX из коробки, поэтому вы можете использовать советы в этой статье с минимальными изменениями. При необходимости я добавляю детали, специфичные для оргрежима, ниже.
Этап 1: AucTeX
AucTeX делает большую часть работы, создавая полноценную среду редактирования LaTeX, — остаётся лишь добавить удобные функции для экономии времени.
AucTeX отвечает за завершение при вводе текста. Самые общие и всегда доступные варианты ввода текста:
- вставка произвольного окружения с помощью
LaTeX-environment
(C-c C-e
); - или макрос
TeX-insert-macro
(C-c C-m
): делает вставку, запросив аргументы; - вставка заголовка раздела с помощью
LaTeX-section
(C-c C-s
).
Пусть это будут запасные варианты: ниже я опишу, как делать вставку гораздо быстрее.
Вот пара удобных функций AucTeX, не относящихся к вводу текста:
Режимы Outline
Я включаю outline-minor-mode
в буферах TeX, чтобы свёртывать разделы, перемещаться по заголовкам разделов и т. д. В Emacs 28 или новее это активирует команду outline-cycle
, чтобы одной клавишей зациклить видимость раздела, как в Org-mode. Привязываю её к TAB
, как в Org-mode 3.
Вот пара полезных связанных с внешним видом функций AucTeX, которые привносят концепцию WYSIWYG:
Красивые символы (M-x prettify-symbols-mode)
prettify-symbols-mode
в буферах LaTeX заменит математические символы более удобными для восприятия эквивалентами в Юникоде. Это сильно упрощает парсинг уравнений:
Основной текст не меняется, и его можно искать в этих символах. Настраивать ничего не нужно: AucTeX автоматически выполнит эти замены. Просто включаем prettify-symbols-mode
:
(add-hook 'LaTeX-mode-hook 'prettify-symbols-mode)
Org имеет свою собственную версию режима prettify-symbols-mode. Вместо него используйте M-x org-toggle-pretty-entities. По умолчанию он привязан к C-c C-x .
Предварительный просмотр в буфере (M-x preview-buffer)
Что может быть лучше замены отдельных символов символами Юникода? Замена целых уравнений и изображений на скомпилированные версии для предварительного просмотра:
Наведя курсор на уравнение, временно удалим наложение изображения и отредактируем окружение:
Просмотрим окружение в точке, активной области, в разделе или во всём буфере — все они привязаны к карте предварительного просмотра (C-c C-p
). Обычная практика — автоматический предварительный просмотр математических окружений при выходе из одного из них (во многих пакетах есть эта функция).
Но вместо удобства она приносит мне скорее раздражение: я предпочитаю свободно редактировать (с включёнными pretty-symbols), а по завершении вызвать preview-section
. В демо этой статьи я использую оба улучшения внешнего вида.
Возможно, вам захочется изменить размер отображаемых изображений предварительного просмотра. Замените число на то, которое вам больше подходит:
(add-hook 'LaTeX-mode-hook
(defun preview-larger-previews ()
(setq preview-scale-function
(lambda () (* 1.25
(funcall (preview-scale-from-face)))))))
Org также имеет свою версию предварительного просмотра LaTeX в буфере. Вместо preview-region можно использовать M-x org-latex-preview. (Привязанные к
C-c C-x C-l
)
Оставшаяся часть AucTeX
AucTeX — это комплексный инструмент. Например, TeX-fold-mode
добавляет ещё один способ скрыть визуальный шум при просмотре документа, позволяя легко переходить к шумным частям:
TeX-error-
и TeX-command-
работают с компиляцией и отладкой, TeX-view
— с просмотром выходных PDF-файлов, TeX-master
— с документами из нескольких файлов, TeX-documentation
— со справкой и т. д. Но всё это — темы отдельных статей.
Этап 2: CDLaTeX
Сказать, что CDLaTeX даёт набор удобных функций, ускоряющих редактирование документов на LaTeX, — всё равно что ничего не сказать. Пара дней практики — и вы будете управляться с фрагментами LaTeX, как мотоциклист, лавирующий в трафике.
Технически AucTeX большую часть этого уже делает, но в тяжеловесном стиле 90-х. Хотите вводить C-c C-o C-o
после заполнения каждого математического окружения? Вот и я не хочу.
Вместо установки CDLaTeX вы включите режим org-cdlatex-mode. Вам даже не нужно устанавливать CDLaTeX, он уже есть в вашей системе! Org-cdlatex-mode является частью Org. Это не случайное совпадение. CDLaTeX был написан Карстеном Домиником (отсюда и CD), который также был основным автором Org-mode.
TABинатор
Лучший трюк с CDLaTeX — активное использование клавиши TAB
. При её нажатии происходит переход к следующей «точке интереса»: курсор помещается в удобные для ввода текста места. Это проще показать. Здесь я перемещаюсь по фрагменту документа с сотней нажатий только клавиши TAB
и никакой больше:
Эвристический подход для определения того, куда TAB
приведёт в каждый следующий момент, в целом довольно хорош и умело применяется к разделителям и макросам LaTeX:
В этом примере он приводит из left(
к интегралу, затем к подынтегральному выражению, к переменной интегрирования и, наконец, к right)
. В руководстве сказано:
«Если сомневаетесь, нажимайте TAB».
Ввод символов
При вводе символа (`)
и буквы происходит вставка символов в буфер, при необходимости автоматически добавляются встроенные математические символы доллара $:
Здесь выбраны назначенные клавиши:
`
и a-z (A-Z)
вставляют греческие буквы (заглавные), так `a
даёт alpha
, `L
даёт Lambda
и т.д. `
плюс клавиши для вставки стрелок:
Имеются сопоставления символов для других операций, например над множествами и т. д. Но запоминать их не нужно: поможет меню с подсказками. Есть три слоя символов, причём менее распространённые из них доступны при повторном нажатии клавиши обратного апострофа: ```key
:
Через пару дней использования CDLaTeX
я автоматически набирал первый слой символов (одиночный обратный апостроф `
) и ждал, когда появятся подсказки для менее распространённых символов в меню двойного ``
или тройного ```
обратного апострофа.
Символы в этом списке можно поменять или добавить, настроив cdlatex-math-symbol-alist
. Чтобы набрать в документе символьную константу обратного апострофа, надо добавить впереди C-q
.
Внимание: в AucTeX есть ещё TeX-math-mode
(он делает нечто очень похожее).
org-cdlatex
вставляет символы в org-режиме без математических разделителей. Это связано с тем, что так меньше визуально отвлекает внимание, а бекенд экспорта LaTeX в Org автоматически добавляет разделители.
Математические и текстовые модификаторы
Модификаторы добавляются к набранному тексту с помощью одинарной кавычки ('
). Это относится к циркумфлексу, точке, тильде, обратному апострофу и над/подчёркиванию на символах, а также изменению стилей шрифта в математическом и текстовом режимах:
Снова набираем кавычку '
и ждём, когда появится окно с подсказками. (Доступно ещё много модификаторов, я использую лишь несколько). В другом направлении это тоже работает. Начинаем с модификатора, затем вводим символ или текст:
Символы в списке можно поменять или добавить, настроив cdlatex-math-modify-alist
. Чтобы набрать символьную константу кавычки, используют ''
.
10 лет назад функция онлайн-справки CDLaTeX была сенсацией. Сегодня эта функция есть в Emacs благодаря which-key
и другим пакетам.
Окружения и математические шаблоны
CDLaTeX определяет набор шаблонов, развёртывающихся в окружениях с помощью TAB
. В этом развёртывании можно, применяя TAB
, переходить по текстовым полям. Например, в текстовом режиме набираете equ[tab]
, чтобы создать окружение уравнений, или sn[tab]
— для раздела, fg[tab]
— для изображения и inc[tab]
— для макроса includegraphics
. А env[tab]
или beg[tab]
вставит любое окружение на выбор. Вот примеры:
Внимание: здесь я использовал TAB
, чтобы вставлять шаблоны и перемещаться по документу.
Похожие клавиши быстрого доступа для разделителей и макросов есть в математических окружениях. Например, он изменяет ^
и подчёркивание _
, вставляя ^{}
и _{}
, и изящно работает с фигурными скобками:
Можете добавить свои. Я добавил окружения для ввода матриц в стиле AMSMATH, настроив cdlatex-command-alist
.
Это знакомо и ожидаемо: эти сниппеты подобны сниппетам других пакетов. Но есть важное отличие: текстовые поля в таком вставщике шаблонов/сниппетов, как YaSnippet, после завершения вставки теряют своё особое значение.
В CDLaTeX с помощью TAB
используются не специальные маркеры в шаблоне, а эвристический метод для перемещений вперёд. Так можно возвращаться к этим полям (и промежуточным) в том же порядке в любое время.
Здесь мы могли бы уже остановиться
Благодаря быстрой вставке символов, модификаторов и окружения AucTeX и CDLaTeX вместе обеспечивают стабильный, быстрый ввод и редактирование LaTeX. Полная настраиваемость этих функций позволяет оставить далеко позади онлайн-пакеты (например, Overleaf) или интегрированные среды разработки LaTeX (например, TeXStudio), это касается большинства задач редактирования4.
Но лень и нетерпение не знают границ. Без конца нажимать TAB
и вводить мудрёные модификаторы '^
или'}
— слишком утомительно, а от клавиши Shift
болят мизинцы, особенно если работать на LaTeX весь день. Пришло время для…
Этап 3: Yasnippet и автоматические сниппеты
Yasnippet используется прежде всего для автоматического развёртывания фрагментов (без нажатия TAB
), чтобы делать записи на лекции, например. Но я использую его лишь для немногих избранных случаев5. Если AucTeX и CDLaTeX — это суп, то YaSnippet — это гарнир. Чтобы YaSnippet автоматически развёртывал сниппеты, приведём его в надлежащий вид. Вот код автоматического развёртывания с помощью YaSnippet:
;; Function that tries to autoexpand YaSnippets
;; The double quoting is NOT a typo!
(defun my/yas-try-expanding-auto-snippets ()
(when (bound-and-true-p 'yas-minor-mode)
(let ((yas-buffer-local-condition ''(require-snippet-condition . auto)))
(yas-expand))))
;; Try after every insertion
(add-hook 'post-self-insert-hook #'my/yas-try-expanding-auto-snippets)
Добавление этой проверки в
post-self-insert-hook
может показаться безумием, но это не вызывает замедления, которое я заметил. Посмотрите пакет auto-activating-snippets или встроенный в Emacs abbrev-mode для другого подхода, если вас это беспокоит.
Следующий шаг — объявить сниппет расширяющимся автоматически. Для этого вы добавляете #condition
: строку в определениях фрагментов. Например, вот фрагмент для автоматического расширения левой и правой фигурных скобок:
# key: set
# name: set
# condition: (and (texmathp) 'auto)
# group: math
# --
left{ $0 right}
Более подробную информацию о написании сниппетов см. в документации YaSnippet.
Чтобы использовать ваши LaTeX Yasnippets в Org, вы можете скопировать их в раздел org вашего каталога сниппетов, или, что ещё лучше, добавить файл с именем .yas-parents в папку сниппетов org с содержанием
latex-mode
Это делает все фрагменты в режиме latex доступными и в Org.
Мои сниппеты адаптированы к вычислениям и линейной алгебре. Большая их часть взята у Жиля Кастеля. Исторически сложилось, что таких сниппетов много. Я использую лишь несколько.
Пусть эти примеры автоматического развёртывания послужат основой для написания ваших собственных сниппетов.
Создание математических окружений
mk
и dm
создают встроенные окружения и окружения уравнений. Здесь нет ничего особенного: набирать их проще, чем $
, $$
или [ ],
или сами слова. YaSnippet развёртывается только на границах слов, поэтому слова типа admin или gymkhana не задействуют эти сниппеты.
Вот демо, где тоже используются символы CDLaTeX, математические модификаторы и шаблоны:
Более быстрые математические модификаторы
Заменим '^
cdlatex на hat{}
, просто набрав hat после символа. Так я набираю то, как читаю или слышу математику: a hat
даёт мне a^ и т. д.:
Делаю ещё несколько таких автоматических переводов:
Где x
— любой символ или s-выражение (т. е. выражение с разделителями).
Внимание: это поведение связано с редактированием буфера до точки и невозможно со встроенной библиотекой abbrev
в Emacs. В большинстве других случаев abbrev-mode
для автоматического развёртывания достаточно.
YaSnippet жалуется, если мы используем сниппет для прямого редактирования буфера, как это происходит в приведённых выше примерах обёртывания символов в
hat{}
и т.д. Возможно, это плохая практика, но у меня пока не было проблем. Я подавляю эти предупреждения с помощью такого кода:
(with-eval-after-load 'warnings
(cl-pushnew '(yasnippet backquote-change) warning-suppress-types
:test 'equal))
Ускорение frac
Делаем настройку //
выражением frac
:
Простые и полезные замены
Вот простые, но полезные автозамены для моих целей:
И так далее. Эта функциональность несколько перекрывается с командой ввода символов cdlatex (`
) — вместо неё и добавляем туда автозамены. Смысл: не в целях экономии времени, а чтобы сохранить поток мыслей при написании. Набираю их, как слышу (то есть leq вместо le
, x adj
вместо x^{dag}
), и они автоматически меняются на правильные символы. Многие из этих замен есть в демо в начале статьи.
Дополнительно: обычные сниппеты с несколькими заполнителями
В смесь можно ещё добавить обычные фрагменты. Я часто использую их, например, для определённых интегралов и производных:
В принципе, их можно просто добавить в cdlatex-command-alist
(его легче настроить), но всё это осталось со старых времён, и мне было лень менять.
Велик соблазн настроить фрагменты для ввода массивов, матриц или векторов. Но есть способ лучше.
Сниппеты: легко и просто
Вставка на основе шаблона или фрагмента — это очень ограниченная (во времени и пространстве) форма взаимодействия с документом. Поля для заполнения сохраняют особое поведение при переходах и вставках, лишь пока фрагмент «существует». Это поведение доступно только в этом месте документа.
Фрагменты жёсткие и монолитные: в определении учитываются все переменные (расположение полей, зеркала или преобразования) и его нельзя поменять на ходу. Но они хрупкие: часто ломаются при отклонении от ожидаемого поведения, то есть TAB
→ вставить текст → TAB
→ вставить текст. Пример: когда курсор убирается, чтобы скопировать что-то из другой части документа в поле фрагмента. Они модальны: выйдя из режима фрагмента, нельзя восстановить их состояние, не начав сначала.
Идеал — перемещение между полями, как между фрагментами, в том числе с преобразованиями полей, но в любое время, в любом месте документа и без такого понятия, как «активный» сниппет. TAB
в CDlatex идёт к этому идеалу, но его эвристический подход для перемещений на основе регулярных выражений весьма ограничен по сравнению с тем, что вообще возможно.
Система лучше — это сочетание текстовых объектов в стиле Vim/ evil-mode
, семантически совместимого парсера LaTeX на основе tree-sitter (генератора парсеров) и улучшенного набора команд DWIM в стиле CDLaTeX, интегрированного в AucTeX. И это без привлечения вспомогательных средств ИИ. Возможно, что-то подобное уже существует или разрабатывается для $MODERN_EDITOR
. Но следует помнить, что лучшее — враг хорошего. Чтобы заделать бреши, вполне хватит немного YaS.
Применение на практике
Окружение, плавающие элементы и математический ввод
Цель — писать LaTeX (и особенно математики), передавая поток мыслей, когда глаза, пальцы и курсор скользят по разметке. Описанный выше процесс ещё не совсем завершён, но уже почти. Обобщённо он выглядит так:
- Чтобы сделать процесс приятнее, включается
prettify-symbols-mode
. - С помощью обратного апострофа (
``
) вводятся символы, а с помощью кавычек (’’) меняется текст или макросы. - Чтобы при наборе перейти к следующей «точке интереса», используется
TAB
. - Чтобы вставить окружение и шаблоны с плавающими элементами, применяются команды CDLaTeX или фрагменты YaS.
env[tab]
для произвольного окружения (с завершением). - Чтобы набрать текст, не нарушая поток, используются автоматически развёртывающиеся фрагменты YaS (или сокращения
abbrev-mode
). Особенно удобны они для математических операторов. - Предварительный просмотр осуществляется с помощью команд
preview-
(очень удобна командаpreview-at-point
). - В отсутствие других возможностей используются не такие быстрые, но полностью совместимые с документом команды AucTeX:
LaTeX-environment
(C-c C-e
) иTeX-insert-macro
(C-c C-m
).
Вот как я ввожу простое уравнение:
- Начните уравнение env с dm (YaS)
- Разверните интегральный сниппет с помощью intl [tab] (cdlatex, но вы можете определить для этого YaS)
- Проложите путь через пределы интегрирования, использовать ` 8, чтобы ввести ∞ как верхний (символ CDLaTeX)
- Получите e{} путём авторасширения e td (YaS)
- Получите −x2 как экспоненту из -x sr (YaS)
- Получите mathrm{d} из следующего d с помощью математического модификатора CDLaTeX ‘r
- Введите π с правой стороны как `p (символ CDLaTeX)
- Получите π{} авторасширением pi td (YaS)
- Получите
как экспоненту π при помощи авторасширения 1 // 2 (YaS)
- Вызовите preview-at-point для предварительного просмотра уравнения с помощью привязки клавиш.
Ввод таблицы, матрицы или массива
В серии Batteries Included («Батарейки в комплекте») кратко написано о orgtbl-mode
. Это мощная, но нечасто применяющаяся встроенная функция Emacs, обеспечивающая редактирование таблиц в стиле org-mode для всех буферов. Используем её для написания LaTeX.
В org-mode очень широкие возможности, позволяющие работать даже с электронными таблицами. Нам будет важно перемещаться по таблице и редактировать её структурно, переходить по ячейкам с помощью TAB
, перемещать столбцы/ячейки, удалять или добавлять новые, транспонировать таблицу и т.д. Свободный ввод матриц или массивов с этими манипуляциями будет очень естественным. А в итоге — ускорение ввода. Здесь я настроил фрагменты CDLaTeX для ввода матриц, чтобы автоматически запустить orgtbl-mode
. По завершении после нажатия C-c C-c
таблица будет преобразована в массив LaTeX:
Вот как это работает с полным матричным уравнением:
А здесь применяется к текстовой таблице. Начинаю с развёртывания шаблона tbl
в cdlatex (уже настроенный для запуска таблицы org-mode). По завершении нажимаю C-c C-c
, чтобы создать табличное окружение LaTeX:
Я переместил код из конфигурации в отдельный пакет, хотя для этого нужно установить CDLaTeX. Смотрите таблицу LazyTab здесь. Преобразование массива или матрицы LaTeX обратно в org-mode таблицу ещё не реализовано.
Перекрёстные ссылки и цитаты
Для Emacs есть много инструментов, чтобы без проблем вставлять цитаты и перекрёстные ссылки. Они даны на этой схеме.
Нам важен метод вызова этих функций. Вместо того чтобы привязывать эти команды к клавишам (как обычно используемые C-c ]
и C-c )
), вызываем команды с помощью сниппета. Чтобы не нарушать поток, используем CDLaTeX для развёртывания слов ref
и cite
в вызовы в обработчики ссылок и цитат:
Математический ввод с калькулятором
Как и в других статьях об Emacs, я не мог обойтись без калькулятора. Что он здесь делает? Много чего.
У него встроенный парсер для математической работы на LaTeX. Он очень прост, но может преобразовывать несложные объекты и уравнения из их представления на «языке программирования» (которое обычно намного легче вводить с клавиатуры) в LaTeX. Здесь я вызываю вспомогательную функцию, чтобы вызвать калькулятор в матрице и уравнении:
При этом калькулятор выполняет вычисления — это дополнительное преимущество. Здесь я инвертирую матрицу в процессе её отображения в виде массива LaTeX.
Также показаны разложение в ряд Тейлора и интегрирование.
(defun latex-math-from-calc ()
"Evaluate `calc' on the contents of line at point."
(interactive)
(cond ((region-active-p)
(let* ((beg (region-beginning))
(end (region-end))
(string (buffer-substring-no-properties beg end)))
(kill-region beg end)
(insert (calc-eval `(,string calc-language latex
calc-prefer-frac t
calc-angle-mode rad)))))
(t (let ((l (thing-at-point 'line)))
(end-of-line 1) (kill-line 0)
(insert (calc-eval `(,l
calc-language latex
calc-prefer-frac t
calc-angle-mode rad)))))))
(define-key LaTeX-mode-map (kbd "C-S-e") 'latex-math-from-calc)
(define-key org-mode-map (kbd "C-S-e") 'latex-math-from-calc)
Вызов других парсеров
Калькулятор — это замечательный программный компонент, вот только находится он где-то между программируемым вычислительным устройством и полноценной автоматизированной системой или системой цифровых вычислений. То есть постоянно удивляет своими возможностями, но слишком ограничен, чтобы использовать его полный рабочий день. Встроенный синтаксический анализатор LaTeX довольно жёсткий, и при неинтерактивном использовании встроенные функции имеют нестандартные, трудно запоминающиеся имена. Транспонирование, например, — trn
.
Хотя я не настроил его, можно также преобразовать формулы стиля программирования в строки LaTeX — используя аналогичный интерфейс, как приведённая выше команда калькулятора, но с более полнофункциональной внешней программой. Парсеры для этого доступны, например, в составе Mathematica, Python (с Sympy) и Julia (с Latexify.jl). А в Xenops есть поддержка.
Настройка TAB
Назначение разных клавиш для outline-cycle
, cdlatex-tab
, yas-expand
и т.д. — это простой подход. Не хочется всякий раз останавливаться и думать, какую клавишу нажать дальше при вводе LaTeX. Поэтому я настраиваю клавишу TAB
, чтобы делать всё в таком порядке:
- Если в заголовке outline, как в разделе, то зацикливаем outline, как в Org-mode.
- Есть текст, развёртываемый CDLaTeX? Развёртываем его.
- Оказались в конце поля Yasnippet? Тогда переходим к следующему.
- Вы в поле Yasnippet? Пробуем перейти на CDLaTeX с
TAB
. Оказываемся за пределами поля? Идём в его конец. - Оказываемся в конце текста в ячейке org-mode таблицы? Переходим к следующей ячейке, как в обычной таблице.
- Оказываемся в ячейке таблицы? Пробуем перейти на CDLaTeX с
TAB
. Оказываемся за пределами ячейки? Идём в её конец.
Похоже на машину Руба Голдберга, но на практике в любом месте она делает именно то, что ожидается. Её код находится в gist, но ещё могут быть пограничные случаи, которые надо учесть, прежде чем работать в каждом контексте.
Сноски
- Отныне просто LaTeX, потому что, черт возьми. ︎
- Не включена в таблицу: грамотное программирование в документе или в качестве документа. Это в основном покрывается PythonTeX в файлах LaTeX и org-babel в org-mode. ︎
- Если вы используете Emacs 27.2 или ниже, есть пакеты Outshine и Bicycle для одноклавишных циклов в стиле Org. ︎
- Конечно, это предполагает, что пользователь хорошо знаком с Emacs. И альтернативы значительно опережают AucTeX в других аспектах, например, в совместной работе. ︎
- Можно также пойти другим путём, отказаться от cdlatex и автоматически расширять все фрагменты с помощью YaS. Но у пакетов сниппетов есть фундаментальная проблема, смотрите «Сниппеты: легко и просто».
︎
Попробовать рекомендации в деле вы сможете на наших курсах:
- Профессия Data Scientist (24 месяца)
- Курс «Математика и Machine Learning для Data Science» (5,5 месяцев)
Узнайте подробности здесь.