Автор Гілка: LaTeX: українська мова і тонкі налаштування  (Прочитано 16558 раз)

Відсутній Campana

  • Письменник
  • *****
  • дописів: 795
  • Карма: +0/-0
  • Проходив мимо
Маю чотири проблеми з LaTeX-ом; гугління щось не допомагає.

1. Написи «Figure», «Table» виводять тільки англійською. У мене texlive-2008. У преамбулах документів пишу
\documentclass[a4paper,12pt]{article}
\usepackage[ukrainian,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
Переноси українські воно теж не знаходить.

2. Не можу змінити назви для таблиць і рисунків — хотілося б мати можливість вставляти довільну назву, напр., "Сх. №", а не "Figure №" і довільний роздільник після неї — крапку замість двокрапки і т. д. В інтернеті є рецепти, але у мене вони не працюють: одні призводять при компіляції до «Undefined control sequence», інші проходять мовчки, але результату немає. Підозрюю, це через проблему 1.

3. Іноді потрібна наскрізна нумерація для різних оточень — власне, таблиць і рисунків. Як її можна зробити? Або декілька незалежних нумерацій в одному тексті. Таке можливо зробити?

4. Не зміг знайти, як нумерувати формули, починаючи з нуля. Довелося зробити для нуля виняток і замість equation написати
$$чудова формула\eqno(0)$$Але це ж не вихід.

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
2. Не можу змінити назви для таблиць і рисунків — хотілося б мати можливість вставляти довільну назву, напр., "Сх. №", а не "Figure №" і довільний роздільник після неї — крапку замість двокрапки і т. д. В інтернеті є рецепти, але у мене вони не працюють: одні призводять при компіляції до «Undefined control sequence», інші проходять мовчки, але результату немає. Підозрюю, це через проблему 1.

3. Іноді потрібна наскрізна нумерація для різних оточень — власне, таблиць і рисунків. Як її можна зробити? Або декілька незалежних нумерацій в одному тексті. Таке можливо зробити?

4. Не зміг знайти, як нумерувати формули, починаючи з нуля. Довелося зробити для нуля виняток і замість equation написати
$$чудова формула\eqno(0)$$Але це ж не вихід.
2. Як приклад: \renewcommand{\tablename}{\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyrya}3. \newcounter{mycounter}\setcounter{mycounter}{0}4. \setcounter{equation}{-1}
« Змінено: 2011-02-13 21:43:12 від cadca »
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Campana

  • Письменник
  • *****
  • дописів: 795
  • Карма: +0/-0
  • Проходив мимо
Дякую, це розв’язує проблеми 2 і 4. 3-я, виявляється, розв’язується запханням таблиць в оточення figure із розміщенням caption в цьому figure поза межами оточення таблиці.

В результаті на початку документа пишемо щось таке:
\RequirePackage{caption}
\DeclareCaptionLabelSeparator{point}{. }
\captionsetup{justification=centering,labelsep=point}
%opening
\title{Назва}
\author{Автор А. Я.}
\date{}

\begin{document}

\renewcommand{\figurename}{\cyr\CYRS\cyrh.}
\setcounter{equation}{-1}

\maketitle
І маємо майже те, що треба (тільки крапки після "Сх. №" немає, якщо назва схеми порожня).

Залишається зрозуміти, чому виникла проблема 1. А то руцями переноси в преамбулі писати якось того...

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
\usepackage[ukrainian,english]{babel}
Замість цього має бути
\usepackage[english,ukrainian]{babel}Поточною мовою документа буде та, що вказана останньою в переліку мов. Це має підключити також і переноси для української мови.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Campana

  • Письменник
  • *****
  • дописів: 795
  • Карма: +0/-0
  • Проходив мимо
Не допомогло.

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
\documentclass[a4paper,12pt]{article}
\usepackage[ukrainian,english]{babel}
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
або так:
\documentclass[a4paper,12pt]{article}
\usepackage[ukrainian,english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T2A]{fontenc}
« Змінено: 2011-02-15 00:02:05 від cadca »
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Не допомогло.
Тоді підготуйте і покажіть мінімальний приклад, який демонструє проблему.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Campana

  • Письменник
  • *****
  • дописів: 795
  • Карма: +0/-0
  • Проходив мимо
Мінімальний приклад. В архіві чотири файли: tex, aux, log i dvi. В логу, зокрема, написано:
(/usr/share/texmf/tex/generic/babel/ukraineb.ldf
Language: ukraineb 2008/03/21 v1.1l Ukrainian support from the babel system


Package babel Warning: No hyphenation patterns were loaded for
(babel)                the language `Ukrainian'
(babel)                I will use the patterns loaded for \language=0 instead.

\l@ukrainian = a dialect from \language0
(/usr/share/texmf/tex/latex/cyrillic/t2aenc.def
File: t2aenc.def 2005/09/27 v1.0i Cyrillic encoding definition file
)

Package babel Warning: No input encoding specified for Ukrainian language on in
put line 136.

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Ем, працює тільки якщо бабель викликати після оголошення кодувань:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[english,ukrainian]{babel}
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
У .tex-файлі не бачу чогось некоректного. Ймовірно, проблема виникає через особливості саме Вашої системи. Залежності від порядку виклику пакетів (про яку говорить cadca) я не помітив.

Цитата
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
Цитата
Package babel Warning: No hyphenation patterns were loaded for
(babel)                the language `Ukrainian'
(babel)                I will use the patterns loaded for \language=0 instead.
Це означає, що правила переносів для української мови не встановлено. Або встановлено, але форматні файли чомусь про них нічого не знають. Якщо, скажімо, ще вчора було все гаразд з переносами, а сьогодні — ні, то це дуже дивно. Тоді треба, мабуть, більше інформації про Вашу систему і про те, що Ви з нею робили. Якщо ж це свіжо встановлений TeX Live або просто Ви раніше не працювали з українськими текстами, то спробуйте зробити таке.

1. Перевірити, чи є в системі (десь там, де встановлено TeX Live) каталоги tex/generic/hyph-utf8/ і tex/generic/ukrhyph/ (я не знаю, чи другий потрібен тепер, якщо є перший; можна провести експеримент і перевірити).

Перевірити, чи підключено українську мову у файлі language.dat.

Якщо ні, то встановити необхідні пакети і підключити мову. Здається, має бути спеціальна language collection для української мови, треба її встановити, а tlmgr у цей час сам змінить файл language.dat. Можливо, хтось інший скаже точніше (я не використовую TeX Live).

2. Оновити базу даних імен файлів.

3. Згенерувати знову форматні файли.

Після цього, якщо Babel у файл протоколу скаже, що hyphenation patterns for ukrainian loaded, то все має бути гаразд з переносами.

Ще можете глянути гілку Переноси в LaTeX. Там була схожа проблема, яка якимось чудесним (незрозумілим мені) чином вирішилася.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Campana

  • Письменник
  • *****
  • дописів: 795
  • Карма: +0/-0
  • Проходив мимо
Хух, проблема була саме в language.dat. Розкоментував останній рядок:
ukrainian    ukrhyph.texвиконав
# fmtutil-sys --allі переноси з’явилися. А порядок виклику babel-а впливає хіба тільки на наявність в логу попередження про невибране кодування.