LaTeX'te bir değişken tanımlamanın herhangi bir yolu var mı?


350

LaTeX'te, derlenmiş PDF'deki değişken yerine içeriği kullanılan bir dize değişkenini nasıl tanımlayabilirim?

Diyelim ki bir yazılıma bir teknik belge yazıyorum ve paket adını önsözde veya başka bir yerde tanımlamak istiyorum, böylece adı değişirse, onu çok fazla yerde değiştirmek zorunda değilim, sadece tek bir yerde .


2
Büyük içerik için \ savebox'tan ( en.wikibooks.org/wiki/LaTeX/Boxes#savebox ) bahsetmeye değer .
Immanuel Weihnachten

Yanıtlar:


371

önsözünüze aşağıdakileri ekleyin:

\newcommand{\newCommandName}{text to insert}

Sonra sadece \newCommandName{}metinde kullanabilirsiniz

Daha fazla bilgi için \newcommandbkz. Örneğin wikibooks

Misal:

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

Çıktı:

30

31
@DiAlex, eklenen metinlerden sonra boşluk bırakacağından, kıvırcık parantezleri çıkarırken dikkatli olun. Bu soruya bakın .
jtpereyda

Ascii olmayan karakterlerle düzgün çalışması için bunu alamıyorum. Herhangi bir fikir?
lindhe

164

\defKomutu kullan :

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

Unutmayın \defgeçersiz kılar çeşitli ince hatalara neden olabilir, bu nedenle herhangi bir uyarı olmadan makro önceden var ve. Ya bunun üstesinden gibi isim alanlı değişkenler kullanmak için my_varveya geri düşmek \newcommand, \renewcommandyerine emrediyor.


10
\defÖnceden var olan makroları kontrol etmediği için kullanmak sorunlu olabilir. LaTeX cehenneminin ikinci çemberine bakın - bu nedenle, kullanımı tercih edilir\newcommand
Ryan Atallah

2
Teşekkürler @RyanAtallah bu konuda not ekledi. Yine de, anlamın anlamı variabledeğişime açık olduğu anlamına gelmiyor mu? :)
Plaes

4
@plaes Haklısın, ama bu hala kullanmak istediğin anlamına gelmiyor \def. Bunun yerine, ilk olarak kullanmak istediğiniz tüm değişkenleri "ilklendirmek" \newcommand(sadece ile bile olsa \@empty) ve daha sonra değişkeni değiştirmek için komutunuzu oluşturmak en iyi yöntemdir \renewcommand. Bu, değişkeninizin zaten çıkıp çıkmadığını size bildirir, çünkü \newcommandbir hata (veya en azından bir uyarı) atar.
Nick2253

4
Not \defederken, matematik modunda şeyler için çalışır \newCommandNameyapmaz. (Örn. \def\mathExpression{\pi^2 + \sin x})
Jollywatt

35

Değişkenler mesafeleri tanımlamak için şunları kullanırsınız \newlength(ve ile değerlerini işlemek \setlength, \addlength, \settoheight, \settolengthve \settodepth).

Aynı şekilde \newcounter, belge boyunca artması gereken bölüm ve şekil numaraları gibi şeylere de erişebilirsiniz . Bunu geçmişte diğer rakamlardan ayrı olarak numaralandırılmış kod örnekleri sağlamak için kullandım ...

Ayrıca, \makeboxdaha sonra yeniden kullanım için (ve \settolength... ile kullanım için ) bir dizi düzenlenmiş belgeyi saklamanızı sağlayan nottur .


25
Basit kullanım örneği gibi \newlength{\hcolw}ve \setlength{\hcolw}{0.47\textwidth}yararlı olacaktır.
trybik


1

Belirteç listesi ayarlamak için: Ben muhtemelen bu amaçla bir belirteç listesini kullanmak istediğiniz düşünüyorum \newtoks\packagename adı atamak için: \packagename={New Name for the package} çıktınıza içine ismini koymak: \the\packagename.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.