Как подключить русский язык в шаблоне overleaf?
На сайте overleaf очень много классных шаблонов для статей, конкретно меня интересует вот этот: https://www.overleaf.com/latex/templates/template-for-blackwell-science-tellus-b-journal/tjtqqxsnhjwj но он ломается (шрифт перестает выделяется жирным/курсивом и т.д.), когда я добавляю команду \usepackage[russian] может быть, кто-то знает, что можно еще добавить, чтобы все заработало? или у кого-то есть классный похожий русский шаблон?
Отслеживать
задан 29 мая 2021 в 7:20
victoria zinkovich victoria zinkovich
21 1 1 серебряный знак 2 2 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В данном шаблоне (как и во многих других от зарубежных авторов/издателей) используется шрифт times (Adobe Times), и этот шаблон не был рассчитан для использования с языками, у которых алфавит отличается от латинского. То есть в этих шрифтах times просто нет кириллицы. И при компиляции latex использует для русских символов стандартный шрифт cmr (Computer Modern), при этом, убирая все модификации (курсив, жирность и т.п.). Поэтому «что-то добавить, чтобы все заработало» без изменения внешнего вида будет сложно. Но есть варианты.
Естественно, для всех дальнейших модификаций нужно добавить в преамбулу:
\usepackage[T2A] \usepackage[utf8] % зависит от кодировки Вашего документа \usepackage[english,russian] % если использовать вставки на английском не нужно, то можно в параметрах оставить только 'russian'
- Самый простой способ — если Вам не важно сохранить текущий шрифт, то можно просто вернуть все настройки шрифтов к стандартному в latex Computer Modern:
\renewcommand \renewcommand \renewcommand
\usepackage \renewcommand \renewcommand \renewcommand
В принципе, вместо шрифта TimesNewRomanPSMT (ftm) можно использовать гарнитуру AntiquaPSCyr (faq) — это аналог гарнитуры Литературная, и она может смотреться лучше, чем Times New Roman. Для использования Antiqua, можно не переопределять явно команду \rmdefault , так как эта гарнитура включается в пакете pscyr по умолчанию:
\usepackage \renewcommand \renewcommand
Остальные две команды нужно переопределять, т.к. они задаются пакетом times (который подгружает класс документа). Со шрифтами PSCyr есть только одна проблема: их не включают в дистрибутивы из-за каких-то лицензионных конфликтов с отдельными гарнитурами (при том, что автор пакета все буквы рисовал сам и ничего не заимствовал), поэтому, этот пакет нужно устанавливать руками. И да, если далее у документа будет какое-то коммерческое использование, то эти лицензионные проблемы могут дотянуться и до автора документа. Я предупредил :-). Еще можно использовать вместо times пакет literat: пакет есть на CTAN, но не включается в дистрибутивы tex-а из-за несоответствия лицензий, кажется. В общем, его тоже нужно устанавливать вручную (в TeXLive он устанавливается с другими «несвободными шрифтами» с помощью скрипта install-getnonfreefonts (искать на сайте texlive)). Также как и с пакетом pscyr, нужно будет переопределеить пару команд:
\usepackage \renewcommand \renewcommand
\usepackage \substitutefont \makeatletter \input \DeclareFontShape < ssub * Tempora-TLF/m/n ><> \makeatother
Adding Languages to Rhino
To add multiple language support to an existing Rhino 6, 7 and 8 installation, follow these steps:
1. In Windows, open the Windows Settings/Control Panel, and click Apps/Uninstall a program.
(To find your Windows settings, select the Start Windows logo button and then select Gear-shaped Settings icon.)
2. Find Rhino 6 in the list and click Modify.
3. In the next dialog, click the Modify button.
4. In the next dialog, click the Select languages button.
5. Select the languages you want to install and click Close.
6. Click Install Now. The installer will download the language pack. Internet connection is required.
7. Start Rhino and go to Tools > Options > Appearance. Select the language that you have just downloaded and click OK.
Распаковка и настройка Google Home Mini
Как настроить компактную умную аудио-колонку от Гугл с голосовым помощником Google Ассистент.
В настройке компактной умной колонки от компании Гугл нет ничего сложного. Основные действия: это подключить её к Wi-Fi и разрешить доступ к вашей учетной записи Google. Настройка осуществляется в приложении Home, интерфейс и диалоги в котором полностью переведены на русский язык.
Колонки Google Home тоже получили поддержку русского языка, но управление умным домом пока возможно только на английском. Команды для этого можно найти в статье команды для Google Home на английском языке.
Распаковка
Ранее мы делали обзор новой умной колонки от гугл, прочесть его в текстовом виде можно по ссылке.
Скачать приложение Home
После первого включения в розетку Home Mini приветствует вас фразой «Welcome to Google Home, to get started download the Google Home app on a phone or tablet» – «Добро пожаловать в Гугл Хоум, чтобы начать скачайте приложение Google Home на телефон или планшет». Оно работает и на Android, и на iOS. Скачать приложение Google Home можно по ссылкам ниже:
Платформа: Android
Цена: Бесплатно
Платформа: iOS
Цена: Бесплатно
Настройка
После того, как вы установите приложение Home и включите колонку в розетку, можно приступать к настройке устройства.
- Открываем приложение Google Home.
- Приложение покажет приветственный экран. Нажимаем «Начать».
- Для входа вам потребуется аккаунт Гугл. Вводим почту или телефон от Google-аккаунта и нажимаем «Далее».
- Вводим пароль и нажимаем «Далее».
- Нажимаем на добавленный аккаунт в списке, он выделится галочкой, и появится кнопка «OK». Нажимаем на неё.
- Для быстрого поиска умной колонки Home Mini приложение Google Home рекомендует включить Bluetooth. Если Bluetooth у вас не работает, то нажимаем «Нет спасибо», но тогда вам придётся настраивать умную колонку через специальную временную Wi-Fi сеть, которую создаст Home Mini. Мы рекомендуем включить Bluetooth – этот путь проще и быстрее.
- После того, как вы подключились к устройству по Bluetooth или Wi-Fi, приложение сообщит, что обнаружено устройство Google Home. Нажимаем «Далее».
- Для того, чтобы убедиться, что связь с Home Mini стабильна, и вы настраиваете именно свою умную колонку, а не другую, – ваша умная колонка Хоум Мини издаст короткий звук. Если вы не услышали его, нажмите «Повторить». Если вы слышали звук – нажмите «Да».
- Т.к. Home Mini на данный момент официально не продаётся в России, приложение Google Home покажет уведомление. В этом нет ничего страшного, все функции умной колонки будут работать. Нажимаем «OK».
- Для удобства дальнейшего управления вашими устройствами в приложении Home выберите из списка названий помещений то, где будет находиться устройство, например «Большая комната». Нажимаем «Далее»
- Для работы Home Mini необходимо подключение к интернету через Wi-Fi. Выберите из списка сеть Wi-Fi, к которой будет подключена умная колонка. Нажимаем «Далее».
- Введите пароль от Wi-Fi сети и нажмите «Подключить».
- Умные колонки Google поддерживают следующие языки с различными диалектами: английский, немецкий, французский и японский. Т.к. Google Home Mini на данный момент не поддерживает русский язык, вам необходимо выбрать из списка иностранный язык. Мы выбрали Английский (Соединенные Штаты). Нажимаем «Далее».
- Вам нужно подтвердить, что вы хотите использовать голосового помощника Google Ассистент. Нажимаем «Далее».
- На этом этапе вас предупреждают о том, что все запросы будут распознаваться на серверах компании Google и просят вас дать разрешение использовать ваши данные. Если вы нажмёте «Нет, спасибо», то умная колонка не сможет отвечать на ваши голосовые команды. Нажимаем «Включить».
- На этом этапе вы должны выбрать голос Google Ассистента. Доступно два варианта голоса: женский и мужской. Нажмите на «Прослушать образец» и выберите вариант, который вам больше всего нравится. Нажимаем «Далее».
- Для улучшения ответов на ваши вопросы Google просит разрешить использовать ваши личные данные из календаря. Нажимаем «Разрешить».
- Укажите свой адрес для улучшения точности некоторых запросов, например о погоде и пробках.
- На этом этапе вам предлагают привязать к умной колонке музыкальный сервис. Для того чтобы привязать Google Play Музыку, вы должны оформить платную подписку или бесплатный тестовый период на 3 месяца (если никогда не пользовались Google-Музыкой). Нажимаем «Далее».
- Почти готово. Проверьте настройки и нажмите «Далее».
- После завершения процесса установки Google Ассистент поздоровается с вами и предложит посмотреть некоторые примеры голосовых команд в приложении Home. Можете полистать их и потестировать: скажите «Эй, Гугл» и затем произнесите запрос, например, «What time is it?». Нажимаем «Завершить настройку».
Расширенные настройки
- Мы рекомендуем применить некоторые дополнительные настройки для вашей умной колонки. Чтобы открыть список ваших устройств, нажимаем на значок телевизора с пультом в правом верхнем углу.
- Откроется список устройств. Чтобы открыть настройки колонки Гугл Хоум Мини, нажимаем на значок с тремя белыми точками.
- Откроется меню, нажимаем «Настройки».
- Нажимаем «Специальные возможности».
- Здесь вы можете включить звуковую реакцию Home Mini на начало команды и на её завершение. Например, вы стоите спиной к колонке и произносите «Эй, Гугл!». Светодиоды загорятся белым светом и прозвучит звуковой сигнал, это означает, что Home Mini услышала вас и ждет, когда вы произнесёте команду.
- По умолчанию в Google Assistant выбраны фаренгейты для измерения температуры при запросе прогноза погоды. В русской версии приложения Google Home пока нельзя менять единицы измерения температуры. Поэтому, чтобы изменить фаренгейты на градусы цельсия, необходимо дать команду умной колонке «Hey Google, change temperature to Celsius». Колонка сообщит вам о том, что применила эту настройку. Теперь попробуйте узнать о погоде у Хоум Мини, сказав команду «Hey Google, what’s the weather today», и колонка расскажет о погоде по вашему адресу, используя градусы цельсия.
Ознакомиться со списком команд для умных колонок Google Home можно в отдельной статье или в нашем справочном приложении со списком команд, которое регулярно обновляется. Установив это приложение, у вас всегда будет под рукой самый актуальный список команд.
Русский язык в консоли
«Повторяющееся слово: » — отображается нормально благодаря setlocale. То что после — крякозяблы, хотя повторяющееся слова находит. setlocale пробовал разные (0, «»), «», «Rus» и пр. В Code::Blocks всё работает и без крякозяблов. Даже без setlocale.
Отслеживать
20.2k 6 6 золотых знаков 38 38 серебряных знаков 81 81 бронзовый знак
задан 17 окт 2015 в 14:52
711 1 1 золотой знак 6 6 серебряных знаков 3 3 бронзовых знака
увы, но setlocale Вас не спасёт, единственный вариант нормальный это сменить кодировку в консоли
17 окт 2015 в 15:00
Найдите дубликат, кто-нибудь!
17 окт 2015 в 16:46
@VladD, нашёл пример с CharToOem, вполне годно ru.stackoverflow.com/questions/70089/…
18 окт 2015 в 2:05
@VladD о, нашел — ru.stackoverflow.com/a/434186/177221 — это работающий вариант именно для Visual Studio. Ваш ответ там тоже есть, кстати. Предлагаю переоткрыть и сделать из этого вопроса каноничный. Потому что CP1251 — это какая-то жесть.
– user177221
18 окт 2015 в 11:40
@Umed, это вопрос с пятью минусами, а не пример. Минусы там за последний UPD автора и к тому же Ваш charToOem и ConsoleCP там тоже есть. Видимо вы даже не удосужились нормально просмотреть скинутую ветку, увы.
18 окт 2015 в 19:38
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
Для данной задачи существует множество решений. Если вам нужно быстрое и не обязательно универсальное решение, чтобы сильно не разбираться, прокручивайте к разделу «Менее правильные, но пригодные решения».
Правильное, но сложное решение
Для начала, проблема у консоли Windows состоит в том, что её шрифты, которые стоят «по умолчанию», показывают не все символы. Вам следует сменить шрифт консоли на юникодный, это позволит работать даже на английской Windows. Если вы хотите поменять шрифт только для вашей программы, в её консоли нажмите на иконку в левом верхнем углу → Свойства → Шрифт. Если хотите поменять для всех будущих программ, то же самое, только заходите в Умолчания, а не Свойства.
Lucida Console и Consolas справляются со всем, кроме иероглифов. Если ваши консольные шрифты позволят, вы сможете вывести и 猫 , если нет, то лишь те символы, которые поддерживаются.
Дальнейшее рассмотрение касается лишь Microsoft Visual Studio. Если у вас другой компилятор, пользуйтесь предложенными на свой страх и риск, никакой гарантии нету.
Теперь, кодировка входных файлов компилятора. Компилятор Microsoft Visual Studio (по крайней мере, версии 2012 и 2013) компилирует исходники в однобайтных кодировках так, как будто бы они на самом деле в ANSI-кодировке, то есть для случая русской системы — CP1251. Это означает, что кодировка исходников в CP866 — неправильна. (Это важно, если вы используете L». » -строки.) С другой стороны, если вы храните исходники в CP1251, то эти же исходники не будут нормально собираться на нерусской Windows. Поэтому стоит хранить исходники в Unicode (например, UTF-8).
Настроив среду, перейдём к решению собственно задачи.
Правильным решением является уйти от однобайтных кодировок, и использовать Unicode в программе. При этом вы получите правильный вывод не только кириллицы, но и поддержку всех языков (изображение отсутствующих в шрифтах символов будет отсутствовать, но вы сможете с ними работать). Для Windows это означает переход с узких строк ( char* , std::string ) на широкие ( wchar_t* , std::wstring ), и использование кодировки UTF-16 для строк.
(Ещё одна проблема, которую решает использование широких строк: узкие строки при компиляции кодируются в однобайтную кодировку используя текущую системную кодовую страницу, то есть, ANSI-кодировку. Если вы компилируете вашу программу на английской Windows, это приведёт к очевидным проблемам.)
Вам нужно _setmode(_fileno(. ), _O_U16TEXT); для переключения режима консоли:
#include #include #include int wmain(int argc, wchar_t* argv[]) < _setmode(_fileno(stdout), _O_U16TEXT); _setmode(_fileno(stdin), _O_U16TEXT); _setmode(_fileno(stderr), _O_U16TEXT); std::wcout
Такой способ должен работать правильно с вводом и выводом, с именами файлов и перенаправлением потоков.
Важное замечание: потоки ввода-вывода находятся либо в «широком», либо в «узком» состоянии — то есть, в них выводится либо только char* , либо только wchar_t* . После первого вывода переключение не всегда возможно. Поэтому такой код:
cout
вполне может не сработать. Используйте только wprintf / wcout .
Если очень не хочется переходить на Unicode, и использовать однобайтную кодировку, будут возникать проблемы. Для начала, символы, не входящие в выбранную кодировку (например, для случая CP1251 — базовый английский и кириллица), работать не будут, вместо них будет вводиться и выводиться абракадабра. Кроме того, узкие строковые константы имеют ANSI-кодировку, а это значит, что кириллические строковые литералы на нерусской системе не сработают (в них будет зависимая от системной локали абракадабра). Держа в голове эти проблемы, переходим к изложению следующей серии решений.
Менее правильные, но пригодные решения
В любом случае, поставьте юникодный шрифт в консоли. (Это первый абзац «сложного» решения.)
Убедитесь, что ваши исходники в кодировке CP 1251 (это не само собой разумеется, особенно если у вас не русская локаль Windows). Если при добавлении русских букв и сохранении Visual Studio ругается на то, что не может сохранить символы в нужной кодировке, выбирайте CP 1251.
(1) Если компьютер ваш, вы можете поменять кодовую страницу консольных программ на вашей системе. Для этого сделайте вот что:
- Запустите Regedit.
- На всякий пожарный экспортируйте куда-нибудь реестр (этот шаг все почему-то пропускают, так что когда всё сломается, мы вас предупреждали).
- В разделе HKEY_CURRENT_USER\Console найдите ключ CodePage (если нету, создайте ключ с таким названием и типом DWORD ).
- Установите значение по ключу (левая клавиша/изменить/Система счисления = десятичная) на 1251.
- Не забудьте перегрузиться после изменений в реестре.
Преимущества способа: примеры из книг начнут работать «из коробки». Недостатки: смена реестра может повлечь за собой проблемы, кодировка консоли меняется глобально и перманентно — это может повлиять сломать другие программы. Плюс эффект будет только на вашем компьютере (и на других, у которых та же кодировка консоли). Плюс общие проблемы неюникодных способов.
Примечание. Установка глобальной кодовой страницы консоли через параметр реестра HKEY_CURRENT_USER\Console\CodePage не работает в Windows 10, вместо него будет использована кодовая страница OEM - предположительно баг в conhost. При этом установка кодовой страницы консоли на уровне конкретного приложения ( HKEY_CURRENT_USER\Console\(путь к приложению)\CodePage ) работает.
(2) Вы можете поменять кодировку только вашей программы. Для этого нужно сменить кодировку консоли программным путём. Из вежливости к другим программам не забудьте потом вернуть кодировку на место!
Это делается либо при помощи вызова функций
SetConsoleCP(1251); SetConsoleOutputCP(1251);
в начале программы, либо про помощи вызова внешней утилиты
system("chcp 1251");
(То есть, у вас должно получиться что-то вроде
#include int main(int argc, char* argv[]) < std::system("chcp 1251"); .
#include int main(int argc, char* argv[]) < SetConsoleCP(1251); SetConsoleOutputCP(1251); .
и дальше обыкновенный код программы.)
Можно обернуть эти вызовы в класс, чтобы воспользоваться плюшками автоматического управления временем жизни объектов C++.
#include #include int chcp(unsigned codepage) < // составить команду из кусочков std::string command("chcp "); command += codepage; // выполняем команду и возвращаем результат return !std::system(command.c_str()); >// этот код будет запущен перед main static int codepage_is_set = chcp(1251);
(если выполняете задание из Страуструпа можно вставить в конец заголовочного файла std_lib_facilities.h )
#include class ConsoleCP < int oldin; int oldout; public: ConsoleCP(int cp) < oldin = GetConsoleCP(); oldout = GetConsoleOutputCP(); SetConsoleCP(cp); SetConsoleOutputCP(cp); >// поскольку мы изменили свойства внешнего объекта — консоли, нам нужно // вернуть всё как было (если программа вылетит, пользователю не повезло) ~ConsoleCP() < SetConsoleCP(oldin); SetConsoleOutputCP(oldout); >>; // и в программе: int main(int argc, char* argv[])
Если вам нужен не русский, а какой нибудь другой язык, просто замените 1251 на идентификатор нужной кодировки (список указан ниже в файле), но, разумеется, работоспособность не гарантируется.
Остались методы, которые тоже часто встречаются, приведём их для полноты.
Методы, которые работают плохо (но могут помочь вам)
Метод, который часто рекомендуют — использование конструкции setlocale(LC_ALL, "Russian"); У этого варианта (по крайней мере в Visual Studio 2012) гора проблем. Во-первых, проблема с вводом русского текста: введённый текст передаётся в программу неправильно! Нерусский текст (например, греческий) при этом вовсе не вводится с консоли. Ну и общие для всех неюникодных решений проблемы.
Ещё один метод, не использующий Unicode — использование функций CharToOem и OemToChar . Этот метод требует перекодировки каждой из строк при выводе, и (кажется) слабо поддаётся автоматизации. Он также страдает от общих для неюникодных решений недостатков. Кроме того, этот метод не будет работать (не только с константами, но и с runtime-строками!) на нерусской Windows, т. к. там OEM-кодировка не будет совпадать с CP866. В дополнение можно так же сказать что эти функции поставляются не со всеми версиями Visual Studio — например в некоторых версиях VS Express их просто нет.
- Как выводить на экран и вводить данные типа wchar_t[]?
- к сожалению, автор того вопроса пользовался компилятором MinGW под Cygwin и WinXP, что делает большинство современных решений неприменимыми.
- Output unicode strings in Windows console app
- Conventional wisdom is retarded, aka What the @#%&* is _O_U16TEXT?
- What's the difference between printf(“%s”), printf(“%ls”), wprintf(“%s”), and wprintf(“%ls”)?
- Русский язык в исходном коде в Dev C++
- Code Page Identifiers