LaTeXで変数を定義する方法はありますか?


349

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

たとえば、ソフトウェアの技術ドキュメントを書いていて、パッケージ名をプリアンブルなどのどこかに定義して、名前が変わった場合に多くの場所で置き換える必要がなく、1か所だけにする必要があるとします。 。


2
巨大なコンテンツの場合、\ savebox(en.wikibooks.org/wiki/LaTeX/Boxes#savebox)について言及することは価値があります。
Immanuel Weihnachten 2013

回答:


370

プリアンブルに次を追加します。

\newcommand{\newCommandName}{text to insert}

次に\newCommandName{}、テキストで使用できます

の詳細については\newcommand、たとえばwikibooksを参照してください

例:

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

出力:

30

31
挿入されたテキストの後の空白に干渉するので、中括弧を省略するときは@DiAlexに注意してください。この質問を参照してください。
jtpereyda 2012

これを非ASCII文字で適切に動作させることができません。何か案は?
lindhe

164

\defコマンドを使用:

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

\def警告なしに既存のマクロを上書きするため、さまざまな微妙なエラーが発生する可能性があることに注意してください。これを克服するmy_varには\newcommand\renewcommand代わりにコマンドのような名前空間変数を使用するか、フォールバックします。


10
を使用\defすると、既存のマクロをチェックしないため、問題が発生する可能性があります。LaTeX地獄の2番目のサークルを参照してください–そのため、使用することが望ましい\newcommand
Ryan Atallah 2012年

2
ありがとう@RyanAtallahはそのことについてのメモを追加しました。でも、の意味はvariable変化しやすいのではないですか?:)
plaes

4
@plaesその通りですが、それでも使用したいという意味ではありません\def。代わりに、使用したいすべての変数を最初に「初期化」し\newcommand(それがだけの場合も含む\@empty)、次にを使用して変数を変更するコマンドを作成することをお勧めします\renewcommand。これにより\newcommand、エラー(または少なくとも警告)がスローされるため、変数が既に存在するかどうかがわかります。
Nick2253 2012年

4
注意\defしながら、数式モードで物事のために働く\newCommandNameしません。(例\def\mathExpression{\pi^2 + \sin x}
Jollywatt 2017

35

距離を説明変数の場合、あなたが使用する\newlength(ととの値を操作\setlength\addlength\settoheight\settolengthおよび\settodepth)。

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

また、\makebox後で再利用するために(そして\settolength... で使用するために)レイアウトされたドキュメントを保存できることに注意してください。


25
\newlength{\hcolw}やのような簡単な使用例\setlength{\hcolw}{0.47\textwidth}が役に立ちます。
trybik


1

おそらく、この目的のためにトークンリストを使用したいと思います。\newtoks\packagename 名前を割り当てるためのトークンリストを 設定 \packagename={New Name for the package} します\the\packagename。出力に名前を入力します 。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.