LaTexで2つの値を分割する方法



How Divide Two Values Latex



解決:

絶対にeTeXを使用する必要があります numexprオプション;それは明確で、ほとんどどこでもサポートされています。

ただし、元のKnuthian TeXに興味がある場合は、算術演算子もあります。 4つの関数には、TeXプリミティブを使用します前進、 multiply、および split、かなりユニークで、私が思うに、賢い方法で:



 documentclass {article}  begin {document}  def  x {30}  def  y {10} $  x  div  y = $  newcount  a  a =  number  x  newcount  b  b =  number  y  divide  a by  b  def  x { the  a} $  x $  end {document}

したがって、最初に、説明の目的で、実行している問題を印刷します。

$  x  div  y = $

私たちがしなければならない次のことは変換することです xと y(TeXはこれを単なる文字と見なします3と0、1と0、10進数としてではなく30および10)に カウント TeXの値 NS 10進数として表示します。したがって、2つのカウンターを作成します。 aと b次に、コマンドシーケンスの10進数バージョンを割り当てます xと次のコードでそれらに y:



 newcount  a  a =  number  x  newcount  b  b =  number  y

aと bには正しい値(30と10)があり、実際の算術演算を実行できます。

 split  a by  b  def  x { the  a}

これはそれがどのように見えるかを行います:それは分割します a by b、保存されている商NS。次に、割り当てるディレクティブ(別のTeXプリミティブ) x、以前の制御シーケンス、の新しい値NS。次に、最後に、商を出力します。

$  x $

これは次のように出力します。



TeXを使用した数式

TeXは、4つの算術演算用に3つのプリミティブを提供します。

  • Advance a by b追加します。
  • Advance a by- b減算を行います。
  • multiply a by b乗算を行います。
  • split a by b除算を行います。

これらはすべてカウンター、接着剤、粘液、および寸法で機能し、それらを混合することもできますが、たとえば、接着剤にカウンターを追加するときは、伸縮性が失われる可能性があるため注意する必要があります。

これらはすべて整数除算を扱っていることに注意することが重要です。小数値は取得されません。一方、少なくとも寸法は、非常に小さいスケーリングされたポイントで機能するため、粒度はかなり印象的です。


これで十分かどうかはわかりませんが、あなたの例では十分です(eTeXが必要です)

 documentclass {scrartcl}  def  basicval#1 { the  numexpr#1  relax}  begin {document}  def  x {30}  def  y {10}  basicval { x /  y}  end {document} 

LuaLaTeXベースのソリューションは次のとおりです。

ここに画像の説明を入力してください

%!TEX TS-program = lualatex  documentclass {article}  begin {document}  newcommand  x {30}  newcommand  y {10}  textbackslashxを textbackslashyで割ると directlua {tex.sprint( x /  y)}。 2.5に4を掛けると、 directlua {tex.sprint(2.5 * 4)}になります。  end {document}

これらの単純な除算の多くを実行する必要がある場合、および他の単純な計算も実行する必要がある場合は、専用のマクロを作成することをお勧めします。

 newcommand  mycalc [1] { directlua {tex.sprint(#1)}}

前文では、ドキュメントの本文の入力を少し節約するために。の引数に注意してください mycalcは除算に限定されません。Lua構文ルールを満たすすべての計算が許可されます。

ここに画像の説明を入力してください

%!TEX TS-program = lualatex  documentclass {article}  newcommand  mycalc [1] { directlua {tex.sprint(#1)}}  begin {document}  newcommand  x {30}  newcommand  y { 10}  textbackslashxを textbackslashyで割ると mycalc { x /  y}になります。 42を$(5  times7)$で割ると、 mycalc {42 /(5 * 7)}になります。  end {document}

補遺 TacoHoekwaterがすでに提案していることに気づきましたTeX.SEの directlua {tex.sprint(...)ソリューション-投稿ConTeXt / e-TeX実数に対する彼の回答を参照してください?