2009-07-31 13 views
255

LaTeXでは、コンパイルされたPDFの変数の代わりに内容が使用される文字列変数をどのように定義できますか?LaTeXで変数を定義する方法はありますか?

ソフトウェアで技術文書を作成していて、プリアンブルやどこかでパッケージ名を定義したいとしましょう。その名前が変更された場合は、多くの場所で置き換える必要はありません1か所だけで

+2

巨大なコンテンツの場合は、\ savebox(https://en.wikibooks.org/wiki/LaTeX/Boxes#savebox)に言及する価値があります。 –

答えて

263

プリアンブルあなたに次の行を追加します。

\newcommand{\newCommandName}{text to insert} 

を次に、あなただけの、例えば参照、\newcommandの詳細情報については、テキスト

\newCommandName{}を使用することができますwikibooks

+10

また、 '' \ newCommandName''だけを使用することもできます。 – dialex

+16

@DiAlexは、中括弧を省略するときは、挿入されたテキストの後の空白を妨げるので注意してください。 [この質問](http://tex.stackexchange.com/q/31091)を参照してください。 – jtpereyda

+0

これはASCII以外の文字では正しく動作しません。何か案は? – lindhe

24

距離を説明変数の場合、あなたは\newlengthを使用します(と\setlength\addlength\settoheight\settolength\settodepthで値を操作します)。

同様に、ドキュメント全体で増分する必要があるセクション番号や数字などの場合は、\newcounterにアクセスできます。私は過去にこれを使用して、他の数字とは別に番号が付けられたコードサンプルを提供してきました。

\makeboxまた、後で再利用するためにレイアウトされた文書の一部を保存することができます\settolength ...と使用するために)。

+12

'\ newlength {\ hcolw}'や '\ setlength {\ hcolw} {0.47 \ textwidth}'のような簡単な使い方が便利です。 – trybik

136

\defのコマンドを使用します。

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

は、したがって、すべての警告とせずにマクロを既存の\defオーバーライドは、様々な微妙なエラーが発生する可能性があることに注意してください。これを克服するには、my_varのような名前空間の変数を使用するか、\newcommand\renewcommandの代わりにコマンドを使用します。

+5

'\ def'を使うと、既存のマクロをチェックしないので問題になることがあります。 LaTeXの地獄の第二の円を参照してください(http://dabacon.org/pontiff/?p = 6101) - それで '\ newcommand'を使用することが好ましいです –

+2

Thanks @ RyanAtallahがそれについてのノートを追加しました。しかし、「可変」という意味は、それが変化する可能性があるという意味ではありませんか? :) – plaes

+4

@plaesあなたは正しいですが、それでも '\ def'を使いたいというわけではありません。代わりに、 '\ newcommand'(単に' \ @ empty'を使っていても)で使用したいすべての変数を最初に「初期化」し、 '\ renewcommandを使って変数を変更するコマンドを作成することをお勧めします'。 '\ newcommand'はエラー(または少なくとも警告)を投げるので、変数がすでに終了しているかどうかを知ることができます。 – Nick2253

12

\newcommandを使用する場合は、\usepackage{xspace}を含めることができ、\newcommand{\newCommandName}{text to insert\xspace}でコマンドを定義することもできます。 \newCommandName{}ではなく、\newCommandNameを使用することができます。 \packagename={New Name for the package} はに名前を入れる:名前を割り当てるためにトークンリスト \newtoks\packagename を設定する :詳細については

http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html

1

私は、あなたはおそらく、この目的のためにトークンリストを使用したいと思いますあなたの出力: \the\packagename

関連する問題