Чи є спосіб я визначити змінну в LaTeX?


350

Як у LaTeX можна визначити змінну рядка, вміст якого використовується замість змінної у складеному PDF?

Скажімо, я пишу технічний документ на програмне забезпечення, і я хочу визначити ім'я пакета в преамбулі чи десь так, що якщо його ім’я зміниться, мені не доведеться замінювати його в багатьох місцях, але лише в одному місці .


2
Для величезного вмісту варто згадати \ savebox ( en.wikibooks.org/wiki/LaTeX/Boxes#savebox ).
Immanuel Weihnachten

Відповіді:


371

додати до преамбули таке:

\newcommand{\newCommandName}{text to insert}

Тоді ви можете просто використовувати \newCommandName{}в тексті

Для отримання додаткової інформації \newcommandдив., Наприклад, wikibooks

Приклад:

\documentclass{article}
\newcommand\x{30}
\begin{document}
\x
\end{document}

Вихід:

30

31
@DiAlex будьте обережні, пропускаючи фігурні фігурні дужки, оскільки це буде заважати пробілу після вставленого тексту. Дивіться це питання .
jtpereyda

Я не можу змусити це правильно працювати з персонажами, які не мають права. Будь-які ідеї?
lindhe

164

Використовувати \defкоманду:

\def \variable {Something that's better to use as a variable}

Майте на увазі, що \defзамінює попередньо існуючі макроси без будь-яких попереджень і тому може спричинити різні тонкі помилки. Щоб подолати це або використовувати змінні , як просторів імен my_varабо падають назад \newcommand, \renewcommandкоманди замість цього.


10
Використання \defможе бути проблематичним, оскільки воно не перевіряє наявність наявних макросів. Дивіться друге коло пекла LaTeX - як таке бажано використовувати\newcommand
Райан Аталла

2
Дякуємо @RyanAtallah додав до цього записку. Хоча, чи не означає це значення, variableщо воно може змінитися? :)
плац

4
@plaes Ти маєш рацію, але це все ще не означає, що ти хочеш використовувати \def. Натомість, я вважаю, що найкраще спочатку "ініціалізувати" всі змінні, з якими ви хочете використовувати \newcommand(навіть якщо це просто з \@empty), а потім створити свою команду для зміни змінної за допомогою \renewcommand. Це дозволить вам знати, якщо ваша змінна вже виходить, оскільки \newcommandвикличе помилку (або принаймні попередження).
Nick2253

4
Зауважте, що це \defпрацює для речей у математичному режимі, а \newCommandNameні. (Напр. \def\mathExpression{\pi^2 + \sin x})
Джолліватт

35

Для змінних опису відстані, можна використовувати \newlength(і маніпулювати значення з \setlength, \addlength, \settoheight, \settolengthі \settodepth).

Так само у вас є доступ до \newcounterтаких речей, як номери розділів та цифр, які повинні збільшуватися протягом усього документа. Раніше я використовував цей для надання зразків коду, які були пронумеровані окремо від інших фігур ...

Також слід зазначити, \makeboxщо дозволяє зберігати трохи викладеного документа для подальшого повторного використання (і для використання з \settolength...).


25
Простий приклад використання, як \newlength{\hcolw}і \setlength{\hcolw}{0.47\textwidth}буде корисним.
trybik

20

Якщо ви хочете використовувати \newcommand, ви також можете включити \usepackage{xspace}та визначити команду \newcommand{\newCommandName}{text to insert\xspace}. Це дозволяє вам просто використовувати, \newCommandNameа не використовувати \newCommandName{}.

Докладніше: http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html


дивіться також tex.stackexchange.com/questions/31091/…
myrdd

1

Я думаю , що ви , ймовірно , хочете використовувати маркер список для цієї мети: створити маркер список \newtoks\packagename присвоїти ім'я: \packagename={New Name for the package} поставити ім'я в свій вихідний: \the\packagename.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.