Ru-Board.club
← Вернуться в раздел «Программы»

» TeX, LaTeX и т.д.

Автор: Griefin
Дата сообщения: 19.06.2007 21:03

Цитата:
Видимо, надо в \caption сделать условие по #1 (как я понимаю, сюда приходит тип флоата, в котором указан caption) и вхачить в начало первого аргумента \makecaption команду смены шрифта...

Лучше сделать это с помощью преобразования строк в команды:
\csname #1captionfont \endcsname
и определить:
\def\tablecaptionfont{\somefont}
\def\figurecaptionfont{\otherfont}.


Цитата:
1) Как реализовать "если определена глобальная переменная \@ZZZ, то выполнить \A"?
2) В какой книге наиболее просто и коротко описаны условные конструкции ТеХа?

1) В LaTeX есть \ifdefined. В plain TeX ее вроде бы нет.
2) Основной источник -- исходники LaTeX (dtx-файлы с комментариями, а не cls и ltx). Базовые конструкции описаны в TeXbook и ее переводах с неадекватным названием "Все про ТеХ".


Цитата:
И мне не очень понятно, как здесь передается аргумент команды \section... Мне, собственно говоря, надо немножко преобразовать этот аргумент перед сборкой секции (перевести все название в верхний регистр). Вставка \MakeUppercase в аргументе-стиле приводит к глюкам. =( Может, тут надо просто другую стилевую команду использовать?


Формат заголовка секции определяется командой \@sect с 8-ю аргументами, которая вызывается из \@startsection. Два последних соответствуют параметрам \section.

Сама задача решается просто. Надо добавить \uppercase в последний аргумент \def\section{...{\sectioncenterstyle\normalsize\normalfont\bf\uppercase}}.
Автор: Varravann
Дата сообщения: 19.06.2007 23:01
Griefin

Цитата:
Лучше сделать это с помощью преобразования строк в команды:
\csname #1captionfont \endcsname
и определить:
\def\tablecaptionfont{\somefont}
\def\figurecaptionfont{\otherfont}.

Спасибо, завтра попробую.


Цитата:
1) В LaTeX есть \ifdefined. В plain TeX ее вроде бы нет.
2) Основной источник -- исходники LaTeX (dtx-файлы с комментариями, а не cls и ltx). Базовые конструкции описаны в TeXbook и ее переводах с неадекватным названием "Все про ТеХ".

1) У меня сугубо LaTeX2E.
1.1) \ifdefined в исходниках всяких пакетов видел - мне бы ее четкий синтаксис узнать (т.е. как задаются аргументы и как обрабатываются).
1.2) \ifdefined{A}{B}{C} - это "если определено A, то делаем B, иначе - C", так?

2.1) В исходниках, к сожалению, никто простейшие операторы ядра не объясняет... Или, по крайней мере, там это очень глубоко зарыто.
2.2) В TeXbook'е я этого тоже не вижу. =(


Цитата:
Сама задача решается просто. Надо добавить \uppercase в последний аргумент \def\section{...{\sectioncenterstyle\normalsize\normalfont\bf\uppercase}}.

А вот фиг... Я ровно так и делал (вставлял ровно в то же самое место и \MakeUppercase, и \uppercase (я вообще не понимаю разницы между этими командами =))). Но резульат один - прут ошибки несогласованности фигурных скобок.

Добавлено:
Update: ну, блин, Кнут и пишет - фиг догадаешься, где что написано.. Только скачивание Кнута в PDFе и текстовой поиск помогли.
Автор: coherent
Дата сообщения: 20.06.2007 09:26
Друзья! Подскажите, пожалуйста,

1. Как правильно набирать в тексте апостроф, например, в украинских текстах. Ошибку при компиляции не показывает, но есть LaTeX Warning: Label `' multiply defined! Хотя текст в dvi-файле нормальный с апострофок, как надо.
2. Что это за команда \CYRE? А то при компиляции выскакивает не ошибка, а снова предупреждение Command \CYRE invalid in math mode on input line 131. В этой строке есть такое $\sim 900\;^oK$. В dvi-файле показывает нормально.
Еще не имею опыта, только начинаю осваивать LaTeX.

Добавлено
С \CYRE уже разобрался. Это буква Е была набрата кирилицей в выражении $E$. Строка, правда, совершенно не та, которую я указал. Я пользуюсь WinEdt и, видно, не разобрался с нумерацией строк. Хотя выражение $\sim 900\;^oK$ тоже, как я понимаю уже, не совсем правильное. Может для градусов Кельвина есть спецсимвол или команда?
Вопрос об апострофе тоже остается для меня неясным.
Автор: Gavk
Дата сообщения: 20.06.2007 13:00
coherent
Для абсолютной шкалы нет понятия градуса. Кельвин имеет размерность числа. То есть правильная запись температуры в кельвинах $T=900\,\mbox{K}$. Таким образом, тебе требуется команда \newcommand{\k}{\,\mbox{K}} и тогда получишь запись $T=900\k$.
Либо выносить размерность за пределы формулы (для выключных формул не подходит).


Автор: Varravann
Дата сообщения: 20.06.2007 13:25
Gavk

Цитата:
Для абсолютной шкалы нет понятия градуса. Кельвин имеет размерность числа. То есть правильная запись температуры в кельвинах $T=900\,\mbox{K}$.

Ты с какого дуба рухнул? Я тебе говорю, как человек, закончивший ФизТех: температурные градусы - это вполне нормальная размерная единица и никакой запятой между числом и "К" не надо.
Доказательства:
1) в СИ градус является одной из основных единиц (см. http://ru.wikipedia.org/wiki/%D0%A1%D0%98);
2) открой любой справочник по физике - там кельвины набраны без запятых.

Вывод: я бы набирал "K" простым прямым английским символом (в \mbox'е) без всяких там извращений. Делать ли пробел между фислом и К - вопрос сложный.
Автор: coherent
Дата сообщения: 20.06.2007 13:36
Gavk
конечно, ты абсолютно прав! Я поражаюсь, как я это прохлопал. По-видимому из-за того, что изначально были градусы Цельсия. Но, чтобы уже уяснить с градусами Цельсия. Каквсе таки их обозначать. Можно ли, например, так:
"при температуре $\sim 900\,^{\circ}\mbox{C}$" ?

Varravann
\, - это маленький пробел между значением и размерностью, если не ошибаюсь.
Автор: Gavk
Дата сообщения: 20.06.2007 14:17
Varravann

Цитата:
в СИ градус является одной из основных единиц (см. http://ru.wikipedia.org/wiki/%D0%A1%D0%98);

Ну и где там градус Кельвина? Кельвин я нашёл (единица измерения термодинамической или абсолютной температуры), а вот градус Кельвина не по глазам...

coherent

Чтобы не мучиться:
\newcommand{\gc}{\ensuremath{^\circ\mbox{C}}} - для любой моды, то есть можно писать так 50\gc и так $50\gc$.
Автор: Panzer
Дата сообщения: 20.06.2007 15:49
Несерьёзный вопрос - как (более-менее) правильно по-русски произносится "LaTeX" ?
Автор: Gavk
Дата сообщения: 20.06.2007 16:04
Panzer
Латех (ТеХ от слова технология, из греческого; Ла - первые буквы фамилии Лесли Лампорта, сделавшего это расширение), поэтому не путать с резиной.
Автор: RuBorTex
Дата сообщения: 20.06.2007 16:57
Gavk
Varravann

Цитата:

Цитата: Для абсолютной шкалы нет понятия градуса. Кельвин имеет размерность числа.


Ты с какого дуба рухнул? Я тебе говорю, как человек, закончивший ФизТех: температурные градусы - это вполне нормальная размерная единица
Автор: Panzer
Дата сообщения: 20.06.2007 17:51
Gavk
А ударение ?
Автор: Gavk
Дата сообщения: 20.06.2007 18:20
Panzer
На первый слог imho.
Автор: Varravann
Дата сообщения: 20.06.2007 18:52
Gavk RuBorTex
Да, "градус Кельвина" - это жаргон физиков-практиков (возможно, оставшийся со старых времен). Сейчас, de jure - просто "Кельвин". Но все равно никаких запятых. =)

Gavk

Цитата:
Латех (ТеХ от слова технология, из греческого; Ла - первые буквы фамилии Лесли Лампорта, сделавшего это расширение), поэтому не путать с резиной.

А мне так кажется, что англоязычные люди читают это как "лейтекс" (т.е. как резину) или как "лэтекс" (т.к. Leslie Lamport, будучи американцем, скорее всего читается как Лэмпо[р]т).
Ну а насчет прочтения TeX'а, я так думаю, что не зря одна известная книжка называлась "Joy of TeX" - если бы "X" в "TeX" и "sex" читалось бы по-разному, то фиг бы так книжку назвали.
Автор: Panzer
Дата сообщения: 20.06.2007 19:57
Gavk
Varravann
Я поборол лень и посмотрел в Википедии. Кнут хотел, чтобы произносили "тех". Лампорт говорит, ему все равно, как произносят LaTeX. Англоязычные произносят LaTeX "лэйтек" или "латек" с ударением на первый слог. Но точно без "кс", не как резину.
Учитывая происхождение названия, русские с полным правом могут говорить "латех" с ударением на второй слог, как имхо и делает большинство.
Вообще не поймешь англосаксов - произносите, говорят, в конце TeX тот же звук, что в слове loch. A Webster даёт для loch два равноправных произношения - "лох" и "лок"!
Автор: Varravann
Дата сообщения: 20.06.2007 20:28
Panzer

Цитата:
Учитывая происхождение названия, русские с полным правом могут говорить "латех" с ударением на второй слог, как имхо и делает большинство.

Ну не знаю... В нашей песочнице (Институт выч.математики РАН, Москва) принято произношение "лАтех" или "тех".


Цитата:
Вообще не поймешь англосаксов - произносите, говорят, в конце TeX тот же звук, что в слове loch. A Webster даёт для loch два равноправных произношения - "лох" и "лок"!

Не, ну уж не "латек" точно!...

=====================================================

Так... Я тут начал мутить со шрифтами. По результатам консультаций со "старшими товарищами" я сделал вывод, что лучше полукустарного PSCyr ничего нет. Поставил - вроде, заработало. Однако тут обнаружился один глюк: рекомендуемый Griefinом пакет txfonts (для подгона Times в англоязычной части) конфликтует с amsmath - в них дублируется команда \iint. Замена оного на mathptmx, вроде, решает проблему...


Добавлено:
P.S. А Лингво на loch дает только одно прочтение - [лок]. Хотя это помечено как шотландское слово... Так что англичане могут читать его и как [лох]... Жуть.
Автор: Panzer
Дата сообщения: 20.06.2007 21:40
Varravann

Цитата:
Не, ну уж не "латек" точно!...

Почему ? Из личного опыта общения с англоговорящими ? http://en.wikipedia.org/wiki/LaTeX дает именно такой вариант.
Автор: Griefin
Дата сообщения: 20.06.2007 21:42
Varravann
Ни разу не видел конфликтов. Нужно поменять порядок подключения.
Автор: Varravann
Дата сообщения: 20.06.2007 23:02
Griefin

Цитата:
Ни разу не видел конфликтов. Нужно поменять порядок подключения.

Мгм.. Ну не знаю... Кстати, что txfonts, что mathptmx при подключении ПОСЛЕ pscyr почему-то вырубают команды \texit, \texbf и им подобные. Если их включать ДО pscyr, то все пучком (я использовал pscyr 0.4d).

А насчет конфликта txfonts с amsmath... Я, честно говоря, не пробовал их местами менять. =)

P.S. К слову... А проблема превращения заголовков section'ов в верхний регистр так и не решилась. Мне пришла в голову только одна тупая мысль: создать алиас на \section и сделать новую команду \section, которая превращает аргумент в верхний регистр, а потом скармливает его через алиас исходной \section.

Добавлено:
P.P.S.! Гы! До меня, кажется, дошло, в чем может быть проблема... Я с некоторыми мрачными целями использую в заголовках разделов разнообразные макросы (\textit и некоторые примитивные самоделки). Не может ли так быть, что \uppercase в стиле заголовка воздействует на \textit до его раскрытия и превращает его в "неуставной" \TEXTIT? Если кто шарит в порядке раскрытия аргументов, подскажите, прав ли я с этой догадкой?
Автор: Varravann
Дата сообщения: 21.06.2007 19:49
Griefin
1) После некотрой медитации над \uppercase я все же понял следующее: эта команда требует после себя аргумента в {}, а конструкция типа

Код: \def\section{\@startsection{section}{1}{\z@}{12pt}{6pt}{\sectioncenterstyle\normalsize\normalfont\bf\uppercase}}
Автор: Griefin
Дата сообщения: 21.06.2007 23:02
У \section есть еще необязательный аргумент (запись в toc), который пишется в квадратных скобках. Это 7-й. Название соответствует 8-му аргументу \@sect. Надо найти #8 в определении \@sect и поместить его в \uppercase{}. Вообще говоря, что мешает просто написать \section{\uppercase{...}}?


Цитата:
Можно ли как-то без хаков и ручной подгонки (т.е. чисто за счет \thispagestyle) сделать так, чтобы на заглавной странице колонтитулы были другие, чем на остальных? Причем другие не только по содержанию, но еще и по высоте (т.е. другие с другим \headheight)?

Надо определить стиль \def\ps@yourstyle{...}. Есть еще пакет fancyheadings для упрощения настройки колонтитулов.
Автор: Varravann
Дата сообщения: 22.06.2007 15:30
Griefin

Цитата:
Название соответствует 8-му аргументу \@sect. Надо найти #8 в определении \@sect и поместить его в \uppercase{}.

Я так и сделал. Но это переиначивает названия не только в \section, но и в \subsection, а это мне уже не надо.


Цитата:
Вообще говоря, что мешает просто написать \section{\uppercase{...}}?

1) Лень.
2) В оглавлении названия секций должны идти в нормальном регистре.

=============================

ADDON спустя полчаса: я все-таки решил эту проблему через "\csname format#1\endcsname{#8}", где команды \formatsection, \formatsubsection и т.п. задаются либо как \uppercase{#1} (для секций и глав), либо как {#1} для более "низких" делений.

Добавлено:
Griefin
Да, все забываю сказать огромное спасибо за конструктивные ответы с кусочками кода! =) Механизм \csname рулит безмерно. =)

Добавлено:
Люди, вы будете смеяться, но я снова наступил на те же грабли. =(

Описанная в предыдущем посте конструкция для переведения заголовков разделов в верхний регистр замечательно работает для всего кроме... библиографии. Я вообще в полной непонятке: определение \thebibliography я руками подправил на использование \section вместо \section* для того, чтобы оно всплыло в оглавлении (и это работает, и я даже проверил, что там учитываются мои format-команды). Но почему-то название библиографии печатается с сохранением оригинального регистра...

Добавлено:
Мгм.. Если заменить в определении \thebibliography "\section{\refname}" на "\section{Список литературы}", то все работает как надо, хотя это и нарушает стандарт. Видать, у меня в \refname записано что-то такое, что сопротивляется команде \uppercase... Среди написанного мной и в стиле Львовского я ничего такого криминального не нашел. Инетресно, а можно как-то заставить ТеХ вывести в итоговый документ буквальное содержимое переменной? Я пробовал "\string\refname", но это давало ошибки при компиляции.
Автор: TeXpert
Дата сообщения: 23.06.2007 00:04
Varravann
Цитата:
Инетресно, а можно как-то заставить ТеХ вывести в итоговый документ буквальное содержимое переменной?
Поиграйся с командами \tracingmacros и \tracingcommand(s?). Весьма полезно. Вообще читай The TeXbook.
Автор: RuBorTex
Дата сообщения: 23.06.2007 02:18
TeXpert

Цитата:
Поиграйся с командами \tracingmacros и \tracingcommand(s?). Весьма полезно. Вообще читай The TeXbook.

Совершенно верно. Только что сунулся к Кнуту и пришёл к тому же выводу.
\refname - не переменная, а макрокоманда. Если, например, вставить в исходник последовательность

Код:
\tracingmacros=1
\refname
\tracingmacros=0
Автор: Varravann
Дата сообщения: 23.06.2007 13:08
RuBorTex

Цитата:
Переопределение \renewcommand{\refname}{Cписок литературы} не помогает - \uppercase срабатывает до раскрытия \refname.

Да, я с такого \renewcommand и начал (причем такое же определение есть и в стиле Львовского).. Может, есть какая-то команда, принуждающая ТеХ сначала раскрыть \refname, а только потом применять \uppercase?
Автор: trigliff
Дата сообщения: 23.06.2007 17:24
Чем можно открыть упакованные пакеты MiKTeX, имеющие расширение *.tar.lzma?
Автор: vova84
Дата сообщения: 23.06.2007 17:47
trigliff

Цитата:
Чем можно открыть упакованные пакеты MiKTeX, имеющие расширение *.tar.lzma?

К этому вопросу присоединяюсь и задаю ещё один: что они делают, так как появились после обновления 11 июня и активно увеличивают своё количество.
Стоит версия 2.6
Автор: Gavk
Дата сообщения: 23.06.2007 18:43
vova84
Как говорят на http://dojo.miktex.org/forums/thread/1407.aspx, MiKTeX Tools 2.5 Beta 15 поддерживает tar.lzma.
Автор: vova84
Дата сообщения: 23.06.2007 18:59

Цитата:
MiKTeX Tools 2.5 Beta 15 поддерживает tar.lzma.

Тогда правильно ли я понимаю, что эти *.tar.lzma разработаны для Unix-like систем и пользователям Windows от них ни тепло ни холодно?
Автор: Griefin
Дата сообщения: 24.06.2007 09:33

Цитата:
MiKTeX Tools 2.5 Beta 15 поддерживает tar.lzma.

Это хорошо. Видимо скоро состоится объединение репозиториев MiKTeX и TeX Live. Если бы стандартизировали формат пакетов CTAN и написали кроссплатформенный менеджер пакетов с автоустановкой зависимостей (вроде apt-утилит в Debian), было бы еще лучше.
Автор: trigliff
Дата сообщения: 24.06.2007 10:42
Gavk

Цитата:
Как говорят на http://dojo.miktex.org/forums/thread/1407.aspx, MiKTeX Tools 2.5 Beta 15 поддерживает tar.lzma.

И что с этого? Какое отношение это имеет к Win + MiKTeX и просмотру содержимого?

vova84

Цитата:
Тогда правильно ли я понимаю, что эти *.tar.lzma разработаны для Unix-like систем и пользователям Windows от них ни тепло ни холодно?

Нет, не правильно. Например на данный момент пакет hyperref входит в базовую инсталляцию MiKTeX и его упаковка имеет расширение *.tar.lzma.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Форматы|кодеки|снятие и обработка звука|lossless&lossy|codec


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.