2014 dxdy logo

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

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




 
 макро-подстановки (\newcommand), пробелы и знаки препинания
Сообщение18.04.2008, 07:28 
Аватара пользователя
Есть ли какой-то универсальный способ автоматической расстановки пробелов после макро-подстановок в текстовом режиме? В качестве примера рассмотрим фразу с \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.04.2008, 08:04 
Аватара пользователя
{} не помогает.

 
 
 
 Re: макро-подстановки (\newcommand), пробелы и знаки препина
Сообщение18.04.2008, 10:12 
Как не помогает? Всегда пользую этот трюк: \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 
Аватара пользователя
Алексей К. писал(а):
Но в макроподстановке это действительно не срабатывает.

О том и речь!

 
 
 
 
Сообщение18.04.2008, 10:26 
Собственно, если забыть о существовании команды \LaTeX, и считать, что существует лишь команда \LaTeX{} (и применить это к другим командам такого типа), то вроде как проблема исчезает...

 
 
 
 
Сообщение18.04.2008, 10:29 
Аватара пользователя
Хорошо, будем считать, что запасной вариант решения найден. Но мне бы хотелось, решить вопрос внутри определения \newcommand{}, а не снаружи.
В частности, использовать \LaTeX{} вместо \LaTeX довольно неудобно.

 
 
 
 
Сообщение18.04.2008, 10:37 
Впечатление, что это неразрешимая задача (типа квадратуры круга), у меня сидит не от того, что я такой уж ТеХнарь, а от многократных обсуждений этого вопроса с настоящими гурами (в прошлом, когда я сам ещё не мог смириться с этим съедаемым пробелом).

 
 
 
 
Сообщение18.04.2008, 23:29 
maxal, попробуйте пакет xspace.

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

 
 
 
 
Сообщение18.04.2008, 23:35 
Аватара пользователя
luitzen, спасибо большое! В точности то, что надо!
Я подозревал, что существует простое решение. До квадратуры круга эта задача явно не дотягивает :lol:

 
 
 
 
Сообщение18.04.2008, 23:48 
Просто Yarkin ещё не до конца создал математику$2\varepsilon$... Там и квадратура решится... :)

 
 
 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group