Автор Гілка: Знак гривні в TeX-системах  (Прочитано 448 раз)

Відсутній gray380

  • Новачок
  • *
  • дописів: 45
  • Solaris
Вітаю!

Знак гривні є в TeX-системах?
Щось ґуґль не допоміг в пошуках.
We're all gonna be in the same place when we die.
We're all gonna be just dirt in the ground.
(c) Tom Waits

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3493
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Знак гривні в TeX-системах
« Відповідей #1 : 2017-03-09 16:44:12 »
Вітаю!

Знак гривні є в TeX-системах?
Щось ґуґль не допоміг в пошуках.
Некоректна постановка питання: знак гривні може бути, а може і не бути у відповідному шрифті.


У Computer Modern Unicode немає.


Тому вибираєте будь-який шрифт, у якому є символ, і вставляєте його до вашого файла TeX. Потім вписуєте символ у текстовий файл початкового коду і збираєте.
I need a brand new mission, premonition
Open road
A round of ammunition
To detonate this life I know
The call of the sunrise
The molotov flame it throws

Відсутній gray380

  • Новачок
  • *
  • дописів: 45
  • Solaris
Re: Знак гривні в TeX-системах
« Відповідей #2 : 2017-03-09 17:01:10 »
Дякую.
Саме про шрифти йшлось.
Якщо у CM нема, значить нема ;)
Додавити инші шрифти, поки що, не бачу сенсу.
We're all gonna be in the same place when we die.
We're all gonna be just dirt in the ground.
(c) Tom Waits

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

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 317
Re: Знак гривні в TeX-системах
« Відповідей #3 : 2017-04-11 13:14:00 »
Не обов’язково ж відмовлятися від CM: можна тільки символ гривні взяти з іншого шрифту, а весь текст хай буде CM.

Зацікавило це питання. Але я з XeTeX зовсім не працював раніше, довелося ґуґлити. Знайшов Foreign currency signs in XeTeX і Computer Modern fonts and Cyrillic letters. Вийшло таке:
Код: LaTeX
  1. \documentclass[a4paper]{article}
  2.  
  3. \usepackage{fontspec}
  4. \usepackage{newunicodechar}
  5.  
  6. \setmainfont[
  7.  Ligatures=TeX,
  8.  Extension=.otf,
  9.  BoldFont=cmunbx,
  10.  ItalicFont=cmunti,
  11.  BoldItalicFont=cmunbi,
  12. ]{cmunrm}
  13.  
  14. \newfontfamily{\currencies}{FreeSerif}
  15. \newunicodechar{}{{\currencies ₴}}
  16.  
  17. \usepackage{polyglossia}
  18. \setdefaultlanguage{ukrainian}
  19.  
  20. \begin{document}
  21.  
  22. Тест 123~₴
  23.  
  24. \end{document}

У мене не встановлено шрифти Computer Modern Unicode (і для експерименту я не хотів їх встановлювати). Тому викликав за іменем файла. Але якщо є Computer Modern Unicode, то замість рядків 6–12 можна написати просто
Код: LaTeX
  1. \setmainfont[Ligatures=TeX]{CMU Serif}

Тепер у мене таке запитання: чи можна якось таке зробити без XeTeX (тобто, використовуючи рушій pdfTeX)?

Я знаю, що можна «призначити» символу з унікодом 20B4 якусь «дію»:
Код: LaTeX
  1. \DeclareUnicodeCharacter{20B4}{\texthryvnia}
Але як означити \texthryvnia? Тобто

1. У якому Type 1 шрифті знайти потрібний гліф? Чи це взагалі можливо зі «стандартними TeXівськими шрифтами»? Наскільки я розумію цю технологію, файл опису шрифту може містити не більше ніж 256 елементів. Тому щоб додати якийсь новий символ, треба стандартний викинути, а цього ніхто робити не буде?

2. Якщо це неможливо зі стандартними TeXівськими шрифтами, то залишається тільки використовувати, наприклад, FreeSerif у форматі TrueType чи OpenType? Але підключити такі шрифти до стандартного рушія видається мені дуже нетривіальною задачею.

Як обхідний шлях я знайшов тільки варіант скласти потрібний символ з курсивної «г» і «дорівнює»:
Код: LaTeX
  1. \documentclass[a4paper]{article}
  2.  
  3. \usepackage[T2A]{fontenc}
  4. \usepackage[utf8]{inputenc}
  5. \usepackage[ukrainian]{babel}
  6.  
  7. \def\texthryvnia{%
  8.   \rlap{\textit{г}}%
  9.   \raisebox{0.2ex}{$\scriptscriptstyle=$}%
  10. }
  11. \DeclareUnicodeCharacter{20B4}{\texthryvnia}
  12.  
  13. \begin{document}
  14.  
  15. Тест 123~₴
  16.  
  17. \end{document}
Організаційною системою УПА є трійкова система.
С. Ф. Хмель, «Українська партизанка»