2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 макро-подстановки (\newcommand), пробелы и знаки препинания
Сообщение18.04.2008, 07:28 
Модератор
Аватара пользователя


11/01/06
5710
Есть ли какой-то универсальный способ автоматической расстановки пробелов после макро-подстановок в текстовом режиме? В качестве примера рассмотрим фразу с \LaTeX:

What is better MS Word or \LaTeX? \LaTeX, of course! But sometimes \LaTeX is tricky to use.

В таком виде она превращается в:

$$\text{What is better MS Word or \LaTeX? \LaTeX, of course! But sometimes \LaTeX is tricky to use.}$$

То есть там, где после \LaTeX идут знаки препинания, все OK. Но вот если после \LaTeX идет пробел, то он съедается. Если же насильно вставить пробел в определение макро-подстановки (как советует Львовский), то появятся лишние проблелы перед знаками препинания.

Я не хочу заботиться о пробелах после каждого использования \LaTeX - как сделать так, чтобы они автоматически появлялись там и только там, где надо (то есть там, где отсутствуют знаки препинания)?

 Профиль  
                  
 
 
Сообщение18.04.2008, 07:41 
Заслуженный участник
Аватара пользователя


18/05/06
13440
с Территории
ммм... может, вставить туда
Код:
{}
?

 Профиль  
                  
 
 
Сообщение18.04.2008, 08:04 
Модератор
Аватара пользователя


11/01/06
5710
{} не помогает.

 Профиль  
                  
 
 Re: макро-подстановки (\newcommand), пробелы и знаки препина
Сообщение18.04.2008, 10:12 


29/09/06
4552
Как не помогает? Всегда пользую этот трюк: \LaTeX{}
$$\mbox{But sometimes \LaTeX is tricky to use}$$
$$\mbox{But sometimes \LaTeX{} is tricky to use}$$
Но в макроподстановке это действительно не срабатывает.
В тексте можно ещё и "\LaTeX\ ".

Но, похоже, это не ответ на Ваш вопрос
maxal писал(а):
Я не хочу заботиться о пробелах после каждого использования \LaTeX...

 Профиль  
                  
 
 Re: макро-подстановки (\newcommand), пробелы и знаки препина
Сообщение18.04.2008, 10:22 
Модератор
Аватара пользователя


11/01/06
5710
Алексей К. писал(а):
Но в макроподстановке это действительно не срабатывает.

О том и речь!

 Профиль  
                  
 
 
Сообщение18.04.2008, 10:26 


29/09/06
4552
Собственно, если забыть о существовании команды \LaTeX, и считать, что существует лишь команда \LaTeX{} (и применить это к другим командам такого типа), то вроде как проблема исчезает...

 Профиль  
                  
 
 
Сообщение18.04.2008, 10:29 
Модератор
Аватара пользователя


11/01/06
5710
Хорошо, будем считать, что запасной вариант решения найден. Но мне бы хотелось, решить вопрос внутри определения \newcommand{}, а не снаружи.
В частности, использовать \LaTeX{} вместо \LaTeX довольно неудобно.

 Профиль  
                  
 
 
Сообщение18.04.2008, 10:37 


29/09/06
4552
Впечатление, что это неразрешимая задача (типа квадратуры круга), у меня сидит не от того, что я такой уж ТеХнарь, а от многократных обсуждений этого вопроса с настоящими гурами (в прошлом, когда я сам ещё не мог смириться с этим съедаемым пробелом).

 Профиль  
                  
 
 
Сообщение18.04.2008, 23:29 
Заслуженный участник


18/03/07
1068
maxal, попробуйте пакет xspace.

Если не хотите вводить новую команду, а желаете переопределить старую, скажите так:
Код:
\let\latex=\LaTeX
\def\LaTeX{\latex\xspace}

 Профиль  
                  
 
 
Сообщение18.04.2008, 23:35 
Модератор
Аватара пользователя


11/01/06
5710
luitzen, спасибо большое! В точности то, что надо!
Я подозревал, что существует простое решение. До квадратуры круга эта задача явно не дотягивает :lol:

 Профиль  
                  
 
 
Сообщение18.04.2008, 23:48 


29/09/06
4552
Просто Yarkin ещё не до конца создал математику$2\varepsilon$... Там и квадратура решится... :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group