Альтернативный ввод в новую команду LaTex - PullRequest
0 голосов
/ 03 ноября 2010

Есть ли альтернативный способ ввода нескольких аргументов в конструкции новой команды LaTex? Я определил

\newcommand{\nuc}[2]{\ensuremath{^{\text{#1}}\text{#2}}}

и я хотел бы вызвать команду через

\nuc{12,C}

а не

\nuc{12}{C}.

Я создал другие команды с еще большим количеством аргументов, и мой бедный мизинец не может обработать все скобки.

Спасибо!

Ответы [ 4 ]

1 голос
/ 04 ноября 2010

Мне нравится хвалить Perltex за определение сложных функций. Это не сложно, но вы можете расширить его довольно внушительно.

%myfile.tex
\documentclass{article}
\usepackage{perltex}

\perlnewcommand{\commafrac}[1]{
  $input = shift;
  @inputs = split(/,/, $input);
  return "\\ensuremath{\\frac{$inputs[0]}{$inputs[1]}}";
}

\begin{document}
One half is $\commafrac{1,2}$.
\end{document}

Компилировать с perltex --latex=pdflatex myfile.tex. Я знаю, что \ frac не был вашим примером, но я нахожу его визуально привлекательным.

1 голос
/ 03 ноября 2010

Может быть, вам понравится.

\def\nuc #1,#2.{\ensuremath{^{\text{#1}}\text{#2}}}

Пример использования:

\nuc 12,C.

Примечание. Используйте точку в конце.

0 голосов
/ 03 ноября 2010

Используйте обычный TeX \def:

\makeatletter
\newcommand*{\nuc}[1]{\nuc@#1\@nil}
\newcommand*{\nuc@}{}
\protected\def\nuc@#1,#2\@nil{\ensuremath{^{\text{#1}}\text{#2}}}
\makeatother
0 голосов
/ 03 ноября 2010

Насколько я знаю, \nuc{12}{c} - единственный путь. Если вы не хотите помещать все символы "} {", пусть редактор сделает это. Сначала напишите \nuc{12,c}, затем замените все запятые на "} {" s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...