Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Вокруг TeX'а

Автор Квас, августа 10, 2009, 08:54

0 Пользователи и 1 гость просматривают эту тему.

Квас

Цитата: Квас от декабря 17, 2009, 22:42
А бывают вообще документы pdf, в которых перенос игнорируется при поиске?

Если бывает, то, может быть, и в ХеТеХе можно так сделать.
Пишите письма! :)

Тайльнемер

Цитата: Квас от декабря 17, 2009, 22:37
Перенос - это же на самом деле дополнительный символ в слове.
Но ведь есть символ мягкого переноса. Если бы вместо пары ‹дефис, конец строки› переносу приписывался бы код мягкого переноса, думаю, поиск был бы возможен.
Цитата: Квас от декабря 17, 2009, 22:42
А бывают вообще документы pdf, в которых перенос игнорируется при поиске?
Не знаю.

Квас

Цитата: Тайльнемер от декабря 18, 2009, 03:10
Если бы вместо пары ‹дефис, конец строки› переносу приписывался бы код мягкого переноса, думаю, поиск был бы возможен.

Так и оказалось! В документации по fontspec нашёл, как выбрать символ переноса: нужно использовать опцию шрифта HyphenChar, которой дать значение кода мягкого переноса. Например,
\fontspec[HyphenChar="00AD]{Garamond}

Цитата: Тайльнемер от декабря 18, 2009, 03:10
Цитата: Квас от Вчера в 23:42
ЦитироватьА бывают вообще документы pdf, в которых перенос игнорируется при поиске?
Не знаю.

Бывают, сам только что сделал. 8-)
Пишите письма! :)

myst


Квас

Потрясающе! Работают даже переносы в латинском тексте с макронами.  :o
Пишите письма! :)

myst

Цитата: Квас от декабря 19, 2009, 00:26
Потрясающе! Работают даже переносы в латинском тексте с макронами. :o
Уникод, итить его! :) Неужели вот оно — щастье?!

myst


Квас

Цитата: myst от декабря 19, 2009, 02:15
Похоже, он один уникод умеет.

Ну да, сделан специально под уникод.
Пишите письма! :)

Тайльнемер

Чё-то я не нашёл, как определять односимвольные команды без слеша (такие как «-» для минуса, «^» для верхнего индекса и т. п.). \newcommand  позволяет определять только команды со слешем. Это вообще возможно?

Тайльнемер


arseniiv


Тайльнемер

Цитата: arseniiv от декабря 23, 2009, 09:50
А как? (Стало интересно.)
1) Если надо чтобы работало везде:
\catcode`символ = \active
\def символ {команда}

2) Если надо чтобы работало только в математических формулах:
\mathcode`символ = команда

Однако в последнем случае у меня возникла проблема с некоторыми символами, причину которой я пока не понял.

arseniiv

Если \mathcode как-нибудь внутренне разворачивается в что-то другое, может, от этого? Вдруг описано в спецификации.

myst

Цитата: arseniiv от декабря 23, 2009, 18:33
Если \mathcode как-нибудь внутренне разворачивается в что-то другое, может, от этого? Вдруг описано в спецификации.
Ничо не понял. :what:
arseniiv, Вы просто виртуоз по запутанному изложению своих мыслей. :)

arseniiv

Спасибо! := Оно как-то само... Даже не прилагая усилий. ;D
Имел ввиду, что если вдруг \mathcode окажется каким-нибудь внутренним макросом (мало ли что придумают), то он с некоторыми символами может неправильно подстанавливаться, и поэтому у Тайльнемера не получается с ними.

Тайльнемер

Цитата: Тайльнемер от декабря 23, 2009, 18:25
\mathcode`символ = команда

Однако в последнем случае у меня возникла проблема с некоторыми символами, причину которой я пока не понял.
Оказывается, \mathcode не принимает в качестве параметра после '=' последовательность ни в каком виде, даже если эта последовательность выделена в отдельную команду.
Например:
\newcommand {\myCommand} {\alpha}
\mathcode`§ = \myCommand

—работает, а вот:
\newcommand {\myCommand} {\alpha\beta}
\mathcode`§ = \myCommand

— не работает.



arseniiv


arseniiv

Offtop
Кто-нибудь, исправьте на «задумано»? Вроде так лучше смотрится.

myst



arseniiv

Приветствую всех и хочу оживить эту тему, потому что поставил XeTeX и не могу включить кириллицу. Вроде поставил пакет (в Package Manager) cyrillic (и ruhyphen тоже), а вёрстщик не находит его:
Цитировать! LaTeX Error: File `ruhyph.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name:
До меня, возможно, дошло: посмотреть в свойствах расширение и сменить на то, которое там.ю Попробую и напишу.

Упс, не то сообщение скопировал.
То есть не XeTeX поставил, а MikTeX, в него он входит же. Хотя специфическими возможностями именно Xe- пока попользоваться не довелось, потому что пишу тестовый документ. Оказывается, там среди прочих файлов установился readme. Пойду почитаю.

И вообще, что бы вы мне посоветовали, с чего начать? ;D

Мне кажется, тот пакет для неуникодной кириллицы, судя по его файлам. Но просто так она у меня не вывелась. Может, надо выбрать какой-нибудь особый шрифт?

Тайльнемер

Я могу только описать, что я делал. Я сам не очень разобрался, поэтому, скорее всего, сделал что-то не так, как надо. Но по крайней мере что-то работает.

Я ставил ТеХ в винде.
1. Установил MikTeX
2. В качестве редактора взял TeXMakerX (не просто TeXMaker, а именно «X») — больше ничего сносного для винды с поддержкой уникода я не нашёл.
3. В качестве шрифтов для текста я взял Computer Modern Unicode Opentype (кажется, отсюда: ftp://canopus.iacp.dvo.ru/pub/Font/cm_unicode/cm-unicode-0.6.3a-otf.tar.gz) и установил их не в ТеХ, а в винду (Windows\Fonts).
4. В редакторе: Options → Configure TeXMakerX → Commands в полях Latex или PdfLatex вместо latex и pdflatex я вписал xelatex с теми же аргументами (xelatex -interaction=nonstopmode %.tex).
5. В тех-файле:

\documentclass[12pt]{article} % (например) %
\usepackage{xunicode, xltxtra, fontspec, polyglossia}
\setmainfont[Mapping=tex-text]{CMU Serif}
\setdefaultlanguage{russian} % (например) %
\setotherlanguage{english} % (например) %
\sloppy % это для адекватного выравнивания строк %
\begin{document}
И тут текст в ʊŋɪćõðê.
\end{document}

Всё работает. С нормальными переносами и всем остальным.

Однако. Для набора математических формул есть два пути:

1. Хороший в перспективе, но недоработанный пакет "unicode-math".
Он позволяет вводить символы непосредственно (например, $α + β$ вместо $\alpha + \beta$), что конечно хорошо. Шрифты использует тоже уникодные. Вменяемых уникодных шрифтов для математики существует довольно мало. Cambria Math из них единственный нормальный по-моему, остальные — какие-то поделки.
Соответственно, в тех-файле нужно прописать что-то типа:

\usepackage{xunicode, xltxtra, fontspec, polyglossia}
\usepackage{unicode-math}

\setmathfont{Cambria Math} % Шрифт для формул %
\setmainfont[Mapping=tex-text]{Cambria} % Шрифт для текста, соответствующий по начертанию %

Пакет unicode-math ещё не выпущен официально. В миктехе его нет, ставится отдельно. У меня встал как-то криво (я не допёр как его ставить надо), и по-нормальному так и не заработал.
Плюс к тому, шрифт Cambria мне не нравится на вид.

2. Можно использовать старые неуникодовые средства для писания формул.
Шрифт при этом берётся по умолчанию Computer modern (не уникодный, из MikTeX'а). (Computer Modern Unicode для текста и не-уникод для формул в выходном pdf'е на вид не отличаются.)
Результат выходит отличный, но вводить, например, греческие буквы напрямую в исходнике не получается.
Для этого мне пришлось извратиться и сделать так:
Если раскладка позволяет (как у меня) вводить ещё всякие символы напрямую, можно ещё поизвращаться:
В принципе, так всё работает. Но неприятное чувство неуникодности остаётся.

arseniiv

Ну, с математикой мне ладно и так — использую MathType (а потом поправляю результат) для делания сложного кода. А этот редактор установлю и поделаю так же (завтра). Спасибо! Надеюсь, получится. Пока почитываю сразу две pdf-книги, сделанные, по всей видимости, как раз TeX'ом. Значит, лишние пакеты не нужны — это хорошо (только как с «дефисацией»? Вряд ли, конечно, мне она понадобится пока. Но вдруг).

Тайльнемер

Цитата: arseniiv от февраля 19, 2010, 20:22
только как с «дефисацией»? Вряд ли, конечно, мне она понадобится пока. Но вдруг.
А что с ней? «Полиглоссия» поддерживает переносы во многих языках, включая русский. Если же какое-то слово система упорно переносит не так как надо, то можно прописать правильный шаблон переносов командой \hyphenation перед текстом.

Единственное, что у меня не получилось — обеспечить возможность поиска среди слов с переносом в pdf'е. А вот у Кваса получилось:
Цитата: Квас от декабря 18, 2009, 20:38
Цитата: Тайльнемер от декабря 18, 2009, 03:10
Если бы вместо пары ‹дефис, конец строки› переносу приписывался бы код мягкого переноса, думаю, поиск был бы возможен.
Так и оказалось! В документации по fontspec нашёл, как выбрать символ переноса: нужно использовать опцию шрифта HyphenChar, которой дать значение кода мягкого переноса. Например,
\fontspec[HyphenChar="00AD]{Garamond}
Квас, можете поподробнее написать, как вы это делали?
А то у меня сам знак переноса заменяется, а вот разрыв строки остаётся, и поиск не работает.

arseniiv

Цитата: Тайльнемер от февраля 19, 2010, 19:35
4. В редакторе: Options → Configure TeXMakerX → Commands в полях Latex или PdfLatex вместо latex и pdflatex я вписал xelatex с теми же аргументами (xelatex -interaction=nonstopmode %.tex).
А как xelatex поймёт, что генерировать? :-\

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр