Напишите макрос для определения новой команды и локального ее вызова.

Напишите макрос для определения новой команды и локального ее вызова.

Я бы написал макрос \defineThisCommand, который определяет новую команду \TheCommandи затем локально ее вызывает. Код должен быть примерно таким:

\defineThisCommand{}{
      \newcommand \ThisCommand{
           #1
      }
      \ThisCommand
}

\begin{document}
    \defineTopicOne{Some text printed}
    \defineTopicTwo{and this too}
\end{document}

генерируя в конце вывод

Some text printed

and this too

Пожалуйста, не могли бы вы подсказать мне способ решения этой проблемы?

решение1

Вы имеете в виду что-то вроде этого:

\documentclass[]{article}

\newcommand\defineanduse[2]
  {%
    \newcommand#1{#2}%
    #1%
  }

\begin{document}

\defineanduse\mycmd{abc}

\defineanduse\myothercmd{def}

\mycmd\myothercmd

\end{document}

введите описание изображения здесь

решение2

Когда TeX находит управляющую последовательность \foo, есть два случая, которые нужно различать в первую очередь: либо TeX выполняет макрорасширение, либо нет. Последний случай не имеет значения в вашей ситуации, поэтому рассмотрим, что происходит в первом случае. Случаи следующие:

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

В первом случае TeX использует значение, которое должно соответствовать контексту: если \fooэто макрос, он будет расширен, если это \chardefтокен, будет напечатан соответствующий символ и т. д.

Во втором случае TeX остановится, выдаст сообщение об ошибке иигнорироватьнеопределенный токен.

Таким образом, вы не сможете сделать то, что вам хотелось бы, если вы предварительно не определили кучу макросов.

\newcommand\defineThisCommand[1]{\newcommand\ThisCommand{#1}\ThisCommand}

для каждой локальной команды, которая вам нужна. Это, очевидно, противоречит вашему намерению: вы не можете иметь, \defineOtherCommandесли вы предварительно не определили это.

Стратегия, которую следует использовать, заключается в использовании универсального макроса сдвааргументы:

\newcommand\define[2]{%
  \newcommand#1{#2}% define the local command
  #2% and also use it now
}

что позволяет вам сказать

\define\ThisCommand{whatever}

делать то, что хочешь.

Связанный контент