W LaTeX, jak mogę zdefiniować zmienną łańcuchową, której treść jest używana zamiast zmiennej w skompilowanym pliku PDF?
Powiedzmy, że piszę dokumentację techniczną na temat oprogramowania i chcę zdefiniować nazwę pakietu w preambule lub w innym miejscu, aby w przypadku zmiany nazwy nie musiałem go zastępować w wielu miejscach, ale tylko w jednym miejscu .
Odpowiedzi:
dodaj następujące preambuły:
Następnie możesz po prostu użyć
\newCommandName{}
w tekścieAby uzyskać więcej informacji
\newcommand
, zobacz np. WikibooksPrzykład:
Wynik:
źródło
Użyj
\def
polecenia:Należy pamiętać, że
\def
zastępuje istniejące makra bez ostrzeżeń i dlatego może powodować różne subtelne błędy. Aby temu zaradzić użyć przestrzeni nazw zmiennych, jakmy_var
i spaść z powrotem\newcommand
,\renewcommand
poleceń zamiast.źródło
\def
może być problematyczne, ponieważ nie sprawdza wcześniej istniejących makr. Zobacz drugi krąg piekła LaTeX - jako taki lepiej jest go używać\newcommand
variable
to, że może ulec zmianie? :)\def
. Zamiast tego uważam, że najlepszą praktyką jest najpierw „zainicjować” wszystkie zmienne, których chcesz używać\newcommand
(nawet jeśli jest to po prostu\@empty
), a następnie utworzyć polecenie, aby zmodyfikować zmienną za pomocą\renewcommand
. Dzięki temu dowiesz się, czy zmienna już istnieje, ponieważ\newcommand
zgłosi błąd (lub przynajmniej ostrzeżenie).\def
działa na rzeczy w trybie matematycznym, a\newCommandName
nie działa. (Np.\def\mathExpression{\pi^2 + \sin x}
)Dla zmiennych opisujących odległości, należy użyć
\newlength
(i manipulować wartości z\setlength
,\addlength
,\settoheight
,\settolength
i\settodepth
).Podobnie masz dostęp do
\newcounter
takich elementów, jak numery sekcji i cyfr, które powinny zwiększać się w całym dokumencie. Użyłem tego w przeszłości, aby dostarczyć próbki kodu, które były ponumerowane oddzielnie od innych cyfr ...Warto również wspomnieć o
\makebox
tym, że można przechowywać trochę ułożonego dokumentu do późniejszego ponownego wykorzystania (i do użytku z\settolength
...).źródło
\newlength{\hcolw}
i\setlength{\hcolw}{0.47\textwidth}
byłby przydatny.Jeśli chcesz użyć
\newcommand
, możesz także dołączyć\usepackage{xspace}
i zdefiniować polecenie za pomocą\newcommand{\newCommandName}{text to insert\xspace}
. Może to pozwolić na użycie\newCommandName
zamiast\newCommandName{}
.Aby uzyskać więcej informacji, http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html
źródło
Myślę, że prawdopodobnie chcesz skorzystać z listy tokena do tego celu: aby utworzyć listę tokenów
\newtoks\packagename
, aby przypisać nazwę:\packagename={New Name for the package}
umieścić nazwę na swoim wyjściu:\the\packagename
.źródło