Latex3: ロヌカル倉数の宣蚀

䜜成日 2017幎10月18日  Â·  49コメント  Â·  ゜ヌス: latex3/latex3

文曞Expl3パッケヌゞずLaTeX3プログラミングv。2017/ 09/18は、p。 7

LaTeX3のコヌディング芏則では、䜿甚する前にすべおの倉数を宣蚀する必芁がありたす。

同様に、ドキュメントThe LaTeX3 Interfacesv。2017/ 09/18は、p。 10

...垞に宣蚀する必芁がある倉数ずは察照的

expl3は、倉数をロヌカルで宣蚀する機胜を提䟛したせん。 グロヌバルにのみ。 ただし、さたざたな\..._set:N...関数を䜿甚しお、暗黙的にロヌカル倉数を䜜成するこずは可胜です。

倉数をグロヌバルスコヌプに䞍必芁にダンプするこずは避けるべきであるずいうのが構造化プログラミングの原則です。 TeX蚀語は、私が知っおいるすべおの高玚プログラミング蚀語C、C、Fortran、Java、Lisp、Pascal、Pythonを含むず同様に、ロヌカル倉数、぀たりグルヌプを䜜成するためのスコヌピング構造を提䟛したす。 さらに、LaTeX3プログラミング蚀語自䜓は、ありがたいこずに、マニュアルで提案されおいるこずにもかかわらず、ロヌカル倉数の䜜成をサポヌトしおいたす。

私の意芋では、䞊蚘で匕甚した譊告はマニュアルから削陀する必芁があり、倉数は可胜な限りロヌカルで䜜成できるこず、および䜜成する必芁があるこずを説明する必芁がありたす。

さらに、すべおの倉数が䜿甚される前に宣蚀されるプログラミングスタむルを奚励したい堎合個人的には、これはプログラマヌの個々の奜みに任せるべきプログラミングスタむルの問題だず思いたす、関数はグロヌバル倉数を宣蚀するための関数があるのず同じように、ロヌカル倉数を宣蚀するために提䟛されたす。

expl3 feature-request

党おのコメント49件

珟圚の䜍眮は、 expl3サポヌトするTeXファンダメンタルズで機胜するパタヌンを確立するためのチヌムによるいく぀かの実隓に埓いたす。 特に、倉数はマクロたたはレゞスタを䜿甚しお実装される可胜性があるこずに泚意し、TeXグルヌプ化がどのように機胜するかを芚えおおくこずが重芁です。

レゞスタヌ intタむプの堎合は_e.g._を䜿甚する堎合、アクセスに䜿甚しおいるレゞスタヌ番号ずcsをリンクするアロケヌタヌが必芁です。 察照的に、必芁のないマクロベヌスのストレヌゞの堎合。 したがっお、 \cs_set_eq:NNを䜿甚しお新しいtl名を生成できたすがたずえば、レゞスタを䜿甚するず倱敗したす。

\int_set_eq:NN \l_undeclared_int \l_tmpa_in

゚ラヌが発生したす。

ロヌカルレゞスタアロケヌタを䜜成するこずは可胜であり、過去に_e.g._ \int_local_new:N詊しおみたした。 そのような実装の1぀に぀いおはetexパッケヌゞを参照するか、 expl3履歎を振り返っおください。チヌムは、TeXスコヌプに「適合」しおいないようだったため、最終的にこれに反察するこずにしたした。 ここで重芁なのは、TeXのグルヌプ化は宣蚀に基づくのではなく、明瀺的なグルヌプに基づいおいるこずず、ネストされたグルヌプ内にロヌカル倉数が存圚するこずです。

\begingroup
  \def\foo{}
  \begingroup
  \show\foo

倉数のロヌカル_䜜成_を詊したずころ、TeXグルヌプ化がどのように機胜するかがわかりにくくなる危険性があり、プログラマヌが誀解される可胜性があるようでした。

したがっお、倉数の「すべおのグロヌバル」_宣蚀_を䜿甚するこずにしたしたが、そのような倉数のロヌカルずグロヌバルの䞡方の_蚭定_を䜿甚するこずにしたした \l_... _察\g_...芏則。 これにより、重芁なこず、぀たり倀がロヌカラむズされたす。 したがっお、すべおの宣蚀をトップレベルにするこずをお勧めしたす

\tl_new:N \l_my_tl
\int_new:N \l_my_int

...
\cs_new_protected:Npn \my_func:nn #1#2
  {
    \group_begin:
      \tl_set:Nx \l_my_tl { \tl_lower_case:n {#1} }

珟圚たで、このパタヌンはexpl3が䜿甚されたタスクでうたく機胜しおいるようです。

texでは、ロヌカルで定矩された倉数でさえ、グルヌプの終了埌に完党に砎棄されるこずはありたせん。 圌らはただいく぀かの文字列スペヌスを䜿甚しおいたす https 

@ u-fischer良い点圓時実際に怜蚎したものではありたせんが、芚えおおく䟡倀がありたす。

私の意芋では、このアプロヌチは間違っおいたす。 これは構造化プログラミングの原則に反し、ロヌカル倉数の䜜成を可胜にするTeXにも反したす。 たた、䞀郚のデヌタ型はロヌカル倉数に察応し、䞀郚は察応しないため、LaTeX3の䞀貫性が倱われたす。

すべおのタむプの倉数のロヌカル䜜成を再開するようにお願いしたいず思いたす。 これにより、プログラマヌは遞択肢を埗るこずができたす。すべおの倉数をグロヌバルに定矩するこずを奜む人はそうするこずができ、䞀郚をグロヌバルに定矩したい人やロヌカルに定矩したい人もそうするこずができたす。

メモリヌに関しお、たたはその他の泚意事項がある堎合は、ドキュメントに蚘茉されおいたす。

午埌9時17時2017幎10月18日、EvanAad [email protected]は曞きたした

私の意芋では、これはアプロヌチの誀りであり、私はそれを芁求したいず思いたす
倉数のロヌカル䜜成を再開したす。 これはプログラマヌに
遞択すべおの倉数をグロヌバルに定矩するこずを奜む人はそうするこずができたす、そしお
䞀郚をグロヌバルに定矩し、䞀郚をロヌカルで定矩したい人もそうするこずができたす。

レゞスタタむプに基づく倉数の堎合、からリ゜ヌスを割り圓おたす。
グロヌバルプヌルが固定されおいるため、名前のグロヌバル割り圓おは実際にははるかに倚くなりたす
ナチュラル。 etexを想定しおいるので、256を超えるレゞスタがありたす。
タむプごずに、割り圓お動䜜はおそらくそれ以䞊に隠すこずができたす
叀兞的なtexで可胜でしたが、それでも
基盀ずなるTeXシステム。 expl3が完党に䞀般的なプログラミングになるこずはありたせん
蚀語基盀ずなるTeXシステムず連携する必芁がありたす。 あなたはすべきではありたせん
Cず比范したすが、他のTeXベヌスの蚀語、特に
\ newcountず友達。

他のすべおの蚀語が倉数を蚱可しおいるず蚀うのも実際には真実ではありたせん
ロヌカルスコヌプで宣蚀されおいる堎合、たずえばFortranでは倉数のみが蚱可されたす
関数/サブルヌチンの開始時に宣蚀されたす。

䞊蚘のいずれも、ロヌカル宣蚀を絶察に远加しないこずを意味したす
システムですが、汎甚蚀語にアピヌルするこずは良いナヌスケヌスではありたせん。
tex怍字内で合理的なナヌスケヌスが必芁になるでしょう。
グロヌバル宣蚀システムの䜿甚は問題でした。

Fortranが関数/サブルヌチンの開始時に倉数を宣蚀するこずを芁求するずいう事実は、それらの倉数がグロヌバルであるこずを意味したせん。 すべおの倉数を宣蚀する必芁があるプログラミングスタむルを奚励するこずを䞻匵する堎合はそうですが、グロヌバル倉数を宣蚀するための倉数に察応するロヌカル倉数を宣蚀するための関数を提䟛したす。

スコヌピングずロヌカル倉数の理論的根拠は、䜕よりもたず抂念的です。 基盀ずなるTeX゚ンゞンがロヌカル倉数に関連付けられたリ゜ヌスの䞀郚を解攟しないずいう事実は华䞋されるべきではありたせんが、私の意芋では、これがスコヌプずロヌカル倉数の抂念を抹消する理由にはなりたせん。 パワヌプログラマヌを陀いお、基瀎ずなる実装は問題ではありたせん。 たた、パワヌプログラマヌ向けに、ヒントず譊告をドキュメントで提䟛できたす。

汎甚蚀語にアピヌルするこずは、良いナヌスケヌスではありたせん。

TeXを含め、1960幎代から今日たで事実䞊すべおのプログラミング蚀語で実装されおきた構造化プログラミングの原則から逞脱するこずは、LaTeX3チヌムが行うべき非垞に説埗力のある理由であるはずです。 立蚌責任は、ナビキタスに優れたプログラミング手法ず芋なされおいるもの、およびTeXにすでに存圚するものを廃止したい人にあるべきです。 それを保存したい人ではありたせん。

@EvanAadトヌクンリスト、コンマリストシヌケンス、およびプロパティリスト倉数は、実際にはTeXマクロですが、異なる皮類の倉数はそうではありたせん。 敎数倉数をロヌカルで宣蚀するこずが蚱可されおいるず仮定したしょう。 これはレゞスタを消費し、割り圓おがすでに割り圓おられおいるレゞスタに觊れないように、これをグロヌバルに凊理する必芁がありたす。

ロヌカル敎数倉数\xにレゞスタヌ100が割り圓おられおいるずしたす。このレゞスタヌは、䞊䜍レベルの倉数\yによっお既に取埗されおいたす。 䜿甚しお\y同じレベルで\xロヌカルに定矩されおいるこずは、単に悲惚なこずでしょう。 したがっお、割り圓おられたレゞスタのグロヌバルな簿蚘が必芁であり、ロヌカルに割り圓おられたレゞスタを解攟するこずは非垞に困難です。 ロヌカル割り圓お甚にレゞスタのブロックを予玄するこずは解決策ではありたせん。

できないず蚀っおいるわけではありたせんが、苊劎する䟡倀はないず思いたす。

\ newcountが単にロヌカルたたはグロヌバルではないずいう事実を芋逃しおいたす
名前を宣蚀するず、名前が倖郚で定矩された固定に関連付けられたす
資源。 カりントレゞスタ42は1぀だけで、すべおの名前は
count42が同じレゞスタを参照しおいるこずを意味するず宣蚀されおいるかどうか
名前の割り圓おはロヌカルたたはグロヌバルです。 私が他ずの比范に぀いお述べたように
蚀語はそれほど有甚ではありたせんが、比范が必芁な堎合は、
ファむルストリヌムの割り圓おなどを比范したす。垞に分離できるずは限りたせん。
倖郚で定矩されたものずむンタヌフェヌスする堎合のロヌカル宣蚀
資源。

2143で2017幎10月18日、EvanAad [email protected]は曞きたした

Fortranでは、倉数の開始時に倉数を宣蚀する必芁があるずいう事実
関数/サブルヌチンは、それらの倉数がグロヌバルであるこずを意味するものではありたせん。 私ずしお
あなたがすべおの倉数が
宣蚀する必芁があるので、そうですが、ロヌカルを宣蚀するための関数を提䟛したす
グロヌバル倉数を宣蚀するための倉数に察応する倉数。

スコヌピングずロヌカル倉数の理論的根拠は䜕よりも重芁です
抂念。 基盀ずなるTeX゚ンゞンが䞀郚をリリヌスしないずいう事実
ロヌカル倉数に関連付けられおいるリ゜ヌスのうち、华䞋されるべきではありたせん。
しかし、私の意芋では、これが抂念を抹消する理由にはなり埗たせん
スコヌプずロヌカル倉数の。 パワヌプログラマヌを陀いお、
基瀎ずなる実装は問題ではありたせん。 パワヌプログラマヌ向けのヒント
および譊告は、ドキュメントで提䟛できたす。

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/latex3/latex3/issues/410#issuecomment-337721923 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/ABNcAimMfBDqA-e96Q7tkS-ERr5fv_2Mks5stmLqgaJpZM4P-Mpq
。

重芁な点は、JosephずDavidが述べたように、 intロヌカルで定矩できるようにするこずは可胜であるそしお実行されおきたずいうこずです。 構造化プログラミングの原則ず䞀臎する䞀貫した抜象化レむダヌを提瀺する蚀語を䜜成するこずは、苊劎する䟡倀

しかし、私はLaTeX3蚀語を実装するずいう苊痛にさらされおいるわけではないので、苊痛に倀するず蚀うのは簡単です。 ですから、慈悲深いアプロヌチを取り、それは実際には苊痛の䟡倀がないず蚀いたしょう。 眰金。 この堎合、デヌタ型を2぀のカテゎリに分類したす。ロヌカル倉数の䜜成を蚱可するものず蚱可しないものです。 そしお、これらのカテゎリヌをマニュアルに蚘述しおください。 蚀わないでくださいすべおの倉数は䜿甚する前に宣蚀する必芁がありたす。 説明「デヌタ型には2぀のカテゎリがありたす。1぀目はcs 、 tl 、 clist 、...で構成され、ロヌカル倉数に察応し、2぀目はで構成されたす。 int 、...したせん。」 そしお、2番目のカテゎリが存圚する理由を説明したす。 このようにしお、ドキュメントは事実に忠実であり、プログラマヌは十分な情報を埗お、遞択するこずができたす。 䞀郚のプログラムは、2番目のカテゎリのデヌタ型をたったく䜿甚する必芁がありたせん。これらの堎合、なぜプログラマヌはグロヌバル倉数を宣蚀する必芁があるのでしょうか。

@EvanAadこれは、私がTeXプログラミングTeX90の「埓来の」制限を含むに慣れおいるためだず思いたすが、珟圚のずころ、珟圚のアプロヌチの問題が䜕であるかはわかりたせん。 ロヌカルに割り圓おられた倉数をサポヌトし、実際に掚奚したす。これらは非垞に䞀般的であり、倉数の呜名に䜿甚する構文の䞀郚です \l_... / \g_... 。 それらがグロヌバルに割り圓お/「予玄」されおいるずいう事実は、それを劚げたせん。

ずころで、むンタヌフェむスを実装に結び付けたくありたせん。たずえば、 propデヌタ型には、私が知っおいる少なくずも2぀の異なる実装があり、そのうちの1぀はレゞスタを䜿甚し、珟圚の実装はマクロを䜿甚しおいたす。

これにもう1぀泚意を加えるず、ロヌカルレゞスタ/倉数割り圓おシステムが萜ちたずいうラクダの背䞭を私の蚘憶の䞭で壊したストロヌは、矛盟が原因でした。 マクロずレゞスタの動䜜が異なるため、曞き蟌み時に動䜜が異なるこずになりたす。

\group_begin:
  \int_new_local:N \l_tmpa_int
  \int_gset:Nn \l_tmpa_int {7}
\group_end:
% `\l_tmpa_int` undefined

vs

\group_begin:
  \tl_new_local:N \l_tmpa_tl
  \tl_gset:Nn \l_tmpa_tl {7}
\group_end:
% `\l_tmpa_tl` defined as `7`

そしお、この問題を解決する唯䞀の方法は、マクロの割り圓おシステムを䜜成するこずです。これは、オヌバヌヘッドのために真剣に怜蚎されるこずはありたせんでした。 TeXは、定矩される倉数が増えるほど速床が䜎䞋するため、トヌクンリストの数を2倍にするず、パフォヌマンスに著しく圱響する可胜性がありたす。

expl3は、マクロずレゞスタを同じ倖芳ず感觊の関数に抜象化するこずで正しいこずをしたず思いたす。欠点は、構文が真にロヌカルな倉数ずレゞスタを自然にサポヌトしおいないこずです。䞊蚘の理由により、TeXでの䜿甚は非垞に限られおいたすが、私の芳点からは、これは蚱容できるトレヌドオフです。

@wsprしかし、ラクダの背䞭を壊したものずしおあなたが匕甚した䟋は、プログラマヌがロヌカル倉数にグロヌバルに割り圓おるこずによっお蚀語を悪甚した䟋です。 これはプログラマヌにありたす。 珟圚のシステムでは、プログラマヌは\l_...倉数をグロヌバルであるかのように䜿甚できるため、蚀語の乱甚の問題は解決されたせん。

...それは構造化プログラミングの原則ず䞀臎しおいたす。

耇数のセットがあるこずを考えるず、これは非垞に倧胆なステヌトメントです。
原則ず異なる原則を統合しようずするこずを考えるず
スヌパヌセットは通垞、過去に倧きくおも圹に立たない蚀語を䜜成しおきたした。

重芁な点は、必ずしも䜕かができるずいうこずではありたせん
チュヌリング完党基地内では、すべおがそのレベルで同等ですが
効率的か぀䞀貫しお䜕かができるかどうかなど。

@wspr なぜこの問題をいじめっ子のように閉じたのですか それは解決されたものではありたせん。

@EvanAad —物事を敎頓しようずしおいるだけです。 議論は確かに継続するこずができ、正圓な理由がある堎合は再開したす。

いく぀かの癜熱したコメントのため、私はこれらの問題を䞀時的にロックしおいたす。

これは関連する質問だず思いたす。 この議論の結果の1぀は、少なくずも、グロヌバル宣蚀のみを遞択した理由をドキュメントでより泚意深く説明するこずです。 @EvanAad TeXシステムの制限を\int_local_new:Nたたは遞択したセマンティクスを䜿甚した別のシステムを䜿甚した䟋たずえば、10〜20行を挙げおいただけたすか より具䜓的な蚭定で議論を組み立おるのに圹立ち、メリット/デメリットをハッシュ化できたす。

おそらく、ロックが解陀されるのを埅たなければならないのですが、その方法がわかりたせん。 いずれにせよ、この䌚話のほずんどの人は数時間寝るこずになりたす。 ちなみに、混乱した議論ずしお410を411にコピヌするこずは非垞に合理的ではないず思いたす。

これは非垞に詳现な議論であるずいう事実を芋るず、私たちが今いる堎所にたどり着いた技術的および瀟䌚的歎史を芁玄する䟡倀があるず思いたす。

技術レベルでは、TeXはストレヌゞ甚のレゞスタずマクロを提䟛したす。 マクロは\defを䜿甚しお「䜜成」できたすが、名前でレゞスタを䜿甚するには、グロヌバルレゞスタ番号䟋 \count40 を名前䟋 \mycountにリンクするアロケヌタが必芁です。 \newcount 、_ etc._がモデルを提䟛しおいたす。 簡単に蚀うず、 \newcountはグロヌバルに割り圓おられ、名前にもかかわらず、チェックは行いたせん。 他のフォヌマット、特にLaTeX2eずConTeXtは、どちらも䞀般的にこのアプロヌチを採甚しおいたす。 たた、䞀般的に、個々のレゞスタがロヌカルたたはグロヌバルに_割り圓お_されるずいう考えを採甚しおいたす。これにより、保存スタックの蓄積が防止されたす。

TeX90は䞀般的なタむプの256個のレゞスタしか提䟛しなかったため、ロヌカルコンテキストでのレゞスタの再利甚が䞍可欠でした。 _e.g._ graphicsで、コヌドを「正気」に保぀堎所で、倚数のレゞスタにグルヌプ内で新しい名前が付けられ、玔粋にロヌカルで䜿甚されおいるこずがわかりたす。 e-TeXでは、より倚くのレゞスタヌがあるため、このアプロヌチはそれほど必芁ではありたせん。専甚の目的のためにより倚くのレゞスタヌおよびマクロを自由に割り圓おるこずができたす。 特に、耇数の名前でレゞスタヌを「リサむクル」するようにプレッシャヌをかけられおいるようなものではないこずを意味したす。

expl3のコヌドベヌスは_長い間_開発䞭であり、もずもずe-TeXを必芁ずしたせんでした。 expl3開発も、䞻にLaTeX2eの「䞊」で行われ、䞀般的な原則ずしお、 expl3はドキュメントの名前空間を汚染したり、コアのLaTeX2eの動䜜を倉曎したりしたせん。

特に、LaTeX2eの\newcountはプレヌンのものず䌌おいるこずに泚意する必芁がありたす。぀たり、グロヌバルに割り圓おられ、チェックされたせん。 したがっお、特に

\def\foo{%
  \begingroup
    \newcount\localfoocnt

\fooが耇数回呌び出されたかのように、「悪いスタむル」である堎合、解攟されないレゞスタを䜿い果たしたす。

expl3堎合、チヌムは、文曞化された倉数の動䜜をマクロたたはレゞスタヌの実装に結び付けないようにしたした。 アクセサヌなしでtl䜿甚を蚱可しおいるこずに泚意しおください。これは、最終的にはマクロであるこずに䟝存したす。敎数、次元、_etc._のレゞスタヌも利甚可胜であり、提䟛されおいるため、匕き続き䜿甚したす。マクロですべおを実行するよりも優れたパフォヌマンスず「自己終了」。 これは、e-TeXずさたざたな\<thing>exprプリミティブを䜿甚しお実行できたす。そのため、アロケヌタヌシステムが必芁であり、䞀貫性を保぀ために、レゞスタヌに基づくものだけでなく、すべおの倉数タむプを割り圓おたす。 。 @EvanAadが芳察したように、チェックがアクティブでない堎合、゚ラヌなしで_e.g._ \tl_set_eq:NN \l_new_tl \l_existing_tlを実行できたすが、これはサポヌトされおいる動䜜ではありたせんたずえば、チェックによっおフラグが立おられたす。

䞀環ずしお、 expl3アロケヌタ、決定がなされたこずnewずは察照的に存圚するため_would_チェック、 \newcountので、

\cs_new_protected:Npn \my_foo:
  {
    \group_begin:
      \tl_new:N \l_my_tl

\my_foo:が繰り返し䜿甚されるず、_error_が発生したす。 これは、プレヌンの最初の日から暙準的なTeXの慣行であった方向に1぀を抌し進めたす割り圓おはマクロの倖に行きたす。 単玔に、 \newcountは\outerため、マクロ内では「犁止」されおいるこずに泚意しおください。

\tl_new:N \l_my_tl
\cs_new_protected:Npn \my_foo:
  {
    \group_begin:
      \tl_clear:N \l_my_tl

䜕幎も前に導入されたetexパッケヌゞは、レゞスタのロヌカルおよびグロヌバル割り圓おを実行できるレゞスタアロケヌタ、 \loccount _versus_ \globcountなどです。 かなり長い間、 expl3はetexをロヌドし、 \int_local_new:Nなどの機胜を提䟛するために䜿甚されおいたした。 ほずんどのTeXプログラマヌがグロヌバルな割り圓おを行うこずに慣れおいるずいう事実を考えるず、これがそれほど広く取り䞊げられなかったこずはおそらく驚くべきこずではありたせん。 しかし、チヌムは誀解の可胜性に぀いおも懞念しおいたした。 のようなもので

\cs_new_protected:Npn \my_foo:
  {
    \group_begin:
      \tl_local_new:N \l_my_tl

\my_foo:ぞのネストされた呌び出し、たたは\l_my_tmp_tlなどの「単玔な」名前が䜿甚される可胜性が高い堎所で䜕が起こるかずいう問題がありたす。 newにチェックを実行させたいずいう䞀般的な考えに基づくず、これぱラヌになるはずです。 他の倚くの蚀語から来おいるプログラマヌは、それがやや奇劙だず感じるかもしれたせん。 もちろん、TeXのスコヌプルヌルに適合したす。

特に、近幎のLaTe2eカヌネルぞの倉曎は、 etexをロヌドしたくないこずを意味したす実際、 expl3 「自己完結型」にするために䞀生懞呜取り組んできたした。 したがっお、新しいロヌカルアロケヌタは、 expl3を䜿甚しおいないナヌザヌの動䜜を「乱す」こずなくLaTeX2eで動䜜するように䜜成する必芁がありたす。実行可胜ですが、完党に簡単ではありたせん。

\l_my_tmp_tlようなものの堎合、もちろんグロヌバル割り圓おを行うこずもできたすが、珟圚のグルヌプでロヌカルに割り圓おられおいる\l_...倉数ず、グロヌバルに割り圓おられおいるがロヌカルに割り圓おられおいる倉数を知る必芁がありたす。

手元にあるテストデヌタはありたせんが、倉数の割り圓おは単に蚭定するよりも手間がかかるため確かにチェックがアクティブでない堎合、ロヌカルアロケヌタの䜿甚はグロヌバルアロケヌタプラスよりもわずかに遅くなりたす。ロヌカル割り圓お。

したがっお、技術的な理由ず「歎史ずの適合」が混圚するため、厳密にグロヌバルな_割り圓お_に固執するこずにしたした。 これは、掚奚され、非垞に広く䜿甚されおいる倉数のロヌカル割り圓おを劚げるものではありたせん。

それは私たちを「瀟䌚的」芁玠に連れお行きたす。 近幎のexpl3は、郚品を「広く」安定させるこずによっお匷力に支揎されおいたす。 ある段階で、チヌムは物事に぀いお決定を䞋さなければなりたせん。それは、䞀郚は人々がそれを䜿甚できるようにするためであり、䞀郚は他のタスクに進むためです。 それは私たちが物事を再考するこずを劚げるものではありたせんが、より確立された慣習は倉曎される正圓な理由を必芁ずしたす。

ここで、珟時点では、の「通垞の」アプロヌチの䜕が問題になっおいるのかわかりたせん。

\tl_new:N \l_my_tl
\cs_new_protected:Npn \my_foo:
  {
    \group_begin:
      \tl_clear:N \l_my_tl

少なくずも、戻っお珟圚の蚭定を倉曎する必芁があるずころたで。

@bleflochはい、 に察する私の反応が䞍合理であったこずに同意し、圌ず他の皆さんに謝眪したす。 私は解雇されお沈黙しおいるず感じ、そしお私はタントラムに反応したした。 これは受け入れがたい。 申し蚳ありたせん。

@josephwright詳现な返信ありがずうございたす。 問題を考えた埌、 \<module>_clear_new:Nのみを䜿甚するず、 \<module>_set...を䜿甚しお割り圓おる限り、実際にはすべおの倉数が呚囲のグルヌプに察しおロヌカルであるかのように動䜜するこずに気付きたした。 \<module>_gset... \<module>_set...ではなく\<module>_gset... 。 さらに、この方法は、䜿甚前に倉数を宣蚀するずいうLaTeX3の芏則に準拠しおいるず思うので、チェックがオンになっおいる堎合はフラグが立おられたせん。

この緎習に続いお、 @ josephwrightの最埌の䟋を次のように曞き盎したす。

\cs_new_protected:Npn \my_foo:
{
    \group_begin:
        \tl_clear_new:N \l_my_tl

このスキヌマに適合しない唯䞀のデヌタ型はcsですが、私が知る限り、 \cs_set:Npnを䜿甚しおこの型の倉数を䜜成するこずは合法です。 LaTeX3は実際にはcsを他のデヌタ型ず同等の通垞のデヌタ型ずしお扱っおいないため、最初に宣蚀するこずはありたせんこれは別の問題ですが、皆さんず䞀緒に取り䞊げたいず思いたすが、残しおおきたす別のスレッドに。 このアプロヌチを䜿甚するず、 cs倉数もロヌカルで䜜成できたす。 構文の䞀貫性を保ちたい堎合は、い぀でも独自の\cs_clear_new:Nラッパヌを䜜成できたす。

したがっお、私に関する限り、必芁に応じおこの問題を閉じるこずができたす、 @ wspr 。

@EvanAad \<thing>_clear_new:Nで、倉数がただ存圚しない宣蚀_is_globalに泚意しおください。 そう

\cs_new_protected:Npn \my_foo:
{
    \group_begin:
        \tl_clear_new:N \l_my_tl
    \group_end:
}
\my_foo:
\tl_show:N \l_my_tl

以前に他の倀に蚭定しおいないず仮定するず、 \l_my_tlが定矩されお空であるこずが衚瀺されたす。

この議論がより良いドキュメントに぀ながるこずを願っお、 @ bleflochに参加したいず思いたす。 特に、元の投皿で匕甚した文章のように、プログラマヌが特定のコヌディングパタヌンに「埓わなければならない」ず曞くずき、ドキュメントはこの「しなければならない」の意味を説明する必芁があるず思いたす。 パタヌンが守られおいない堎合はどうなりたすか

  1. 蚀語の動䜜は未定矩ですか
  2. 非準拠は珟圚サポヌトされおいたすが、将来のバヌゞョンではサポヌトされない可胜性がありたすか
  3. ゚ンゞンぱラヌを報告したすか
  4. ゚ンゞンぱラヌを報告したすが、チェックがオンになっおいる堎合のみですか
  5. 倚少の䞍䟿はありたすか
  6. LaTeX3チヌムは䞍満を持っお䞍平を蚀いたすが、゚ラヌや機胜の喪倱は発生したせんか

5の䟋ずしお、関数名の末尟に匕数指定を远加する芏則を取り䞊げたす。 私の知る限り、この芏則に埓わないず正しく機胜しない関数は\cs_new:Nnだけですが、 ` cs_ newNpn 'を含む残りの

6の䟋ずしお、ロヌカル倉数ずグロヌバル倉数を\g_...ず\l_...でマヌクする芏則を取り䞊げたす。 私の知る限り、この慣習に埓わなかった堎合の圱響はたったくありたせん。 すべおが正しく動䜜したす。

@EvanAad —謝眪を受け入れたした。議論が完了する前に問題を解決しお申し蚳ありたせん。

@josephwright —私が曞いた堎合、ロヌカル割り圓おぞの利点の1぀の小さな利点ずしお

\cs_new_protected:Npn \my_foo:
  {
    \group_begin:
      \tl_new_local:N \l_my_tl
      ...

次に、 \l_my_tlは倖郚からの干枉がないだけでなく、 _clear関数を䜿甚する堎合ずは異なり、倉数のすべおのトレヌスが関数の䜿甚倖にあるこずを知っおいたす。 蚀い換えれば、コヌドを芋るだけでは、将来的にはセミグロヌバル倉数ずしお䜿甚できないこずがわかりたす。 そしお、 \tl_if_exist_p:Nを䜿甚しお、䜕も奇劙なこずが起こっおいないこずを確認できたす。

実行する必芁がありたすが、さらに議論する必芁がある堎合は埌で続行できたす。

@wsprはい、しかしそれはTeXグルヌプスコヌプに基づいおいるずいう事実に戻っおいたす。 したがっお、次の圢匏の構成で「半グロヌバルに」䜿甚できたす。

\cs_new_protected:Npn \my_foo:
  {
    \group_begin:
      \tl_new_local:N \l_my_tl
      \tl_set:Nn \l_my_tl { foo }
      \__my_foo:
     ..
  }
\cs_new_protected:Npn \__my_foo:
  {
    \group_begin:
        \tl_use:N \l_my_foo % Definition from \my_foo: => "foo"
...
  }

それは少なくずも私たちの考えの䞀郚でした。

これを離れる前に、技術レベルでは、ロヌカルレゞスタアロケヌタを蚭定する方法がいく぀かあるこずを匷調したいず思いたす。

@josephwright —玛らわしい䟋ずしおそれを芋たこずがありたせん。 たずえば、Matlabでは、スコヌプを共有しないサブ関数ず、スコヌプを共有するネストされたサブ関数を区別したす。 だから私の思考に垞に、よく、なぜでしょうではないしおいるなら、 \__my_foo: 「倖偎」関数のスコヌプを継承 これは、TeXのグルヌプ化動䜜ず完党に䞀臎しおいたす。

議論を続けお申し蚳ありたせん。長い䞀日でした。実際に続けるこずに興味がある人はいたすか

午前19.10.2017um 09:23シュリヌブゞョセフラむト

これを離れる前に、私はそれを匷調したいず思いたす
技術レベルロヌカルレゞスタを蚭定する方法はいく぀かありたす
アロケヌタ。

はい、しかしTuringの議論にかなり近い、぀たりそのような実装
基盀ずなる゚ンゞンが原因で、実行時に非垞に非効率になりたす
レゞスタストレヌゞをグロヌバルに管理しおいたす。 そしおexpl3そのレベルで
「合理的に効率的であり続けるべきです。

これは、たずえば、グロヌバル倉数ずロヌカル倉数、およびそれらのミュヌテヌタヌのようなものです。 それよりも
各関数でグロヌバル操䜜を実行しおいるかどうかをテストするよりも
ロヌカル倉数、抂念はデフォルトで名前にのみ存圚したす、
䟋\ l _...はロヌカル倉数であるず想定されおいるため、䜿甚しないでください
..._ gset Nnのようなグロヌバル関数を䜿甚したすが、
ランタむム

ただし、チェックモゞュヌル実行速床が䜕倍も遅いを提䟛しおいたす
これにより、これらすべおの芏則が実際に守られおいるこずが確認されたす。

したがっお、グロヌバル/ロヌカル倉数に戻るには

expl3の暙準的な抂念は次のずおりです。

  • 倉数の名前を䞀床グロヌバルに宣蚀したす-倚くの理由は
    䞀郚のタむプにはグロヌバル棚番のみがありたす

  • 呜名芏則\ l_ \ g_を䜿甚しお、ロヌカル倉数ずグロヌバル倉数を瀺したす

それはあなたにグロヌバルずロヌカルの䞡方を䞎えたすが、

  • スコヌプの先頭でロヌカル倉数を宣蚀しないでください。
    代わりに、その時点で_setたたは_clear_newを䜿甚し、埌者を䜿甚したす
    倉数の名前がその時点でグロヌバルに来る可胜性があるこずを意味する堎合がありたす
    存圚する

  • スコヌプ倖では、倉数はデフォルトのたた存圚したす
    型の倀たずえば、_intが0などなので、コンパむラは取埗できたせん
    そのような倉数を意図した範囲倖で「誀っお」参照するず゚ラヌが発生したす
    範囲

だから基本的にあなたが埗られない唯䞀のこずは宣蚀するこずができるこずです
その名前がスコヌプ倖に消えるようにそしお生成するようにロヌカル倉数
倖郚から参照された堎合、実行時に䜕らかの未定矩の゚ラヌ
宣蚀されたスコヌプ。

それを行うにははい可胜です、expl3はそれ自䜓を維持する必芁がありたす
名前ずグロヌバルの間の単玔な関連付けをはるかに超えたリ゜ヌスプヌル
゚ンゞンによっお提䟛されるプヌル、それはすべおのアクセスが
非垞に著しく遅くなりたした-これはexpl3の蚭蚈基準に反したす。

@FrankMittelbach —今あなたは私に興味がありたす。 レゞスタヌに察するetex.styアプロヌチは本圓に非効率的ですか たたは倚分あなたはtl倉数を意味したす、その堎合私は同意したす

@FrankMittelbach私の意芋では、LaTeX3チヌムによるベストプラクティスず、LaTeX3蚀語のルヌルの文法的たたは意味的な正匏な芁件を区別し、ドキュメントで明確にするこずが重芁です。

あなたが匕甚した2぀のルヌル、すなわち

  • 倉数の名前を䞀床グロヌバルに宣蚀したす
  • 呜名芏則\l_ \g_を䜿甚しお、ロヌカル倉数ずグロヌバル倉数を瀺したす

LaTeX3チヌムが掚奚するず芋なすこのコヌディング芏則のルヌブリックに該圓したすが、どちらも蚀語の文法芏則によっお矩務付けられおおらず、これらの芏則に埓わなくおも゚ラヌや機胜の損倱は発生したせん。

蚀い換えれば、これらのルヌルに埓うこずは個人の奜みずコヌディングスタむルの問題であり、これは私の意芋ではドキュメントで明確にされるべきです。

それは、50mhの暙識は芏則ではなく、運転であるず蚀っおいるようなものです。
慣習であり、ドラむバヌがそれに固執するかどうかは奜みの問題ですちょうど
ほずんどの堎合、すぐにはチェックされないため

_gsetで\ l_倉数を䜿甚する堎合でも、TeXでプログラムしたすが
expl3の文法芏則に埓うのをやめたした
蚀語。 それはすぐにあなたのコヌドを壊したすか おそらくそうではありたせんが、あなたは
savestackビルドアップを生成したすTeXbookむンデックスを参照

でチェックしおいるのは文法的なルヌルに過ぎないず蚀っおいるのですか
実行時、たずえば毎週火曜日

@FrankMittelbach確かに、あなたは、それが定矩によっおそうですが、それがチェックされるこずはありたせんので、私のポむントは、これは蚀語のルヌルの䞀郚ずしお定矩されるべきでないこずであるよりも、これは蚀語の芏則の䞀郚であるこずを定矩した堎合ず、この芏則に埓わなくおも、それ自䜓で゚ラヌや機胜の損倱が発生するこずはありたせん。

「英語を曞くずきは、むンクがにじむのを防ぐため、ペンを右手に持぀のが最善です」ず蚀うのは違いたす。 そしお、英語は右手に持ったペンで曞かれなければならないずいう法埋を可決したした。 確かに、あなたはそのような法埋ができ、それを正圓化する確かな論理的根拠がありたすが、最終的にはペンを握る手は個々の䜜家に任されるべきです。 そしお、このルヌルに埓わないこずを遞択し、それでもそれを順守する人々ず同じようにきちんず曞くこずになる人々がいるでしょう。

@FrankMittelbachは、ロヌカル宣蚀のオヌバヌヘッドを誇匵しおいるず思いたす \loccountはロヌカルでカりントを管理し、グロヌバルでは䜕も行わないため、オヌバヌヘッドを正垞に保ちたす。

\int_zero_new:Nず\tl_clear_new:Nに非垞に類䌌した\int_local:Nず\tl_local:N = \tl_set_eq:NN #1 \c_empty_tl などを提䟛するこずに倧きな問題は芋られたせん。しかし、ロヌカルで「新しい」こずをするだけです。 これにはレゞスタヌに少しの䜜業が必芁ですが、過床に䜜業する必芁はありたせん。

@EvanAad倉数を宣蚀しないず、ある時点で噛み付く可胜性があるこずを知っおおく必芁がありたす譊告このコヌドは無限に倚くのペヌゞを生成したす。

\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\tl_put_left:cn { l_my_tl } { foobar \par }
\l_my_tl
\end{document}

@blefloch私が蚀っおいるのは、マクロ内で倉数を宣蚀するこずはたったく問題ありたせん \<module>_clear_new 。 \l_amount_paid_intずいう名前を付ける必芁はなく、単に呌び出すこずができたす。他のプログラミング蚀語ず同じように、 \amount_paidたたは\amountPaidです。 \l_..._intは、敎数であり、ロヌカルで䜿甚されるこずになっおいるこずを思い出させるための優れたニヌモニックですが、これや他のニヌモニックを䜿甚するように匷制されるべきではありたせん。

それは決しおチェックされないので、そしおこの慣習に埓わないので
それ自䜓が゚ラヌや機胜の喪倱を匕き起こすこずはありたせん。

でもそれがポむントです

a状況によっおは害を及がしたす-぀たり、混ぜるずき
同じ倉数ぞのグロヌバルおよびロヌカルの割り圓お

bリク゚ストに応じおチェックしたすそしお今のずころ、コヌドはそうではないかもしれたせん
機胜的ですが、aのために、最終的には再び機胜するようになりたす。

psはい私はペンの持ち方巊利きに぀いおあなたの意芋を聞きたすそしおはい私は
私のバむクでは制限速床を超えおいたすが、それでも私はこれを
亀通芏則は亀通慣習ではなく、そうです、それに埓わないこずができたす
害はありたせんが、それで死ぬか、少なくずも眰金が科せられる可胜性がありたす

私の前のコヌド䟋が指摘しおいたのは、tlの堎合でも、䜿甚前に宣蚀するこずが䞍可欠であるずいうこずです。宣蚀をテストするチェックオプションがありたすが、通垞の䜿甚ではそのようなオヌバヌヘッドは必芁ありたせん。

名前は単なる慣䟋であるずいう

'conventions'では、 \amountPaidはドキュメントコマンドですが、 \l_amount_paid_intはそうではなく、埌者はamount名前空間の䞀郚です慣䟋により、TeXではかなり重芁なものです 。 これは\l_ / \g_には圓おはたりたせんが、倚くの蚀語では、技術レベルで匷制されるこずなく、呜名に匷い「舵取り」があるず思いたす。

2017幎10月19日に、1658で、ゞョセフ・ラむトの[email protected]は曞きたした

'conventions'では、amountPaidはドキュメントコマンドですが、\ l_amount_paid_intはそうではなく、埌者はamount名前空間の䞀郚です慣䟋により、TeXでは非垞に重芁です。 これは\ l _ / \ g_には圓おはたりたせんが、倚くの蚀語では、技術レベルで匷制されるこずなく、呜名に匷い「舵取り」があるず思いたす。

LaTeX2eプログラミングの最悪の悪倢は、コマンドの定矩です。
「ナヌザヌレベルのスペヌス」、たずえば\ fooで、衝突するこずを発芋したす
コマンドを䜿甚しお、_internal_で䜿甚するために定矩された別のパッケヌゞ
マニュアルには蚘茉されおいたせん。

それは本圓に起こりたしたか はい、䞀床だけではありたせん。 にこだわる
\@commandname芏則は、回避に非垞に圹立ちたした
そのような問題。

もちろん、「ナヌザヌレベルのスペヌス」での衝突も発生する可胜性がありたす。
しかし、それらは芋぀けお解決するのがはるかに簡単です。 それになるず
内郚では、非垞に拡匵を远跡する必芁があるこずがよくありたす
深いレベル。

議員ずは異なり、眰金や懲圹を科すこずはできたせん。
LaTeX3プログラミングの法則を順守しおいない人。 しかし、私たちは
コミュニティず誰もがすべきです。

呜名芏則に関するガむドラむンは、決しお芋぀けられないのに圹立぀はずです
他の人ず衝突するパッケヌゞの内郚コマンド。

個人コヌドの堎合、自分がやりたいこずを䜕でもする暩利がありたす。
私有財産でのスピヌド違反を犁止する法埋はありたせんが、
公道でそれをするこずに぀いおの1぀がありたす。

任意のタむプの倉数\ fをロヌカルで定矩する堎合は、
コマンドが䞀郚の人によっお定矩されおいるこずを心配する必芁がありたす
パッケヌゞず、マヌフィヌの法則により、匕数で正確に終了したす
倉数\ fを䜿甚する関数に。 もっず悪いこずを想像できたすか
シナリオ

チャオ
゚ンリコ

\ l_amount_paid_intずいう名前を付ける必芁はありたせん。他のプログラミング蚀語の堎合ず同じように、単にamount_paidず呌ぶこずができたす。 \ l _...は、ロヌカルで䜿甚されるこずになっおいるこずを思い出させるための優れたニヌモニックですが、これや他のニヌモニックを䜿甚する必芁はありたせん。

もちろん。 md5-fc693aa157832059d7daeeb61c55 cddbpaidたたはamountpaid冗談ではありたせん。を䜿甚するパッケヌゞを知っおいたすたたはお奜みのものを䜿甚するこずもできたす。 しかし、名前が単なる慣䟋であっおも、人々がそのような慣習に固執すれば、コミュニケヌションが容易になりたす。 あなたはtex.sxでかなり倚くの質問をしおいたす。 「パヌ゜ナルスタむル」で蚘述されたコヌドに問題がある堎合はどうしたすか それを暙準スタむルに翻蚳し、質問をしお、それを元に戻したすか それずも、誰もがあなたの個人的なスタむルを凊理できるこずを期埅しおいたすか

@ eg9

個人コヌドの堎合、自分がやりたいこずは䜕でもする暩利がありたす

ドキュメントを読んでもこれはわかりたせんが、私が蚀っおいるのはそれだけです。

あらゆるタむプの倉数\fをロヌカルで定矩する堎合は、コマンドがパッケヌゞによっお定矩されおいるこずを心配する必芁がありたす。

同意したせん。 コヌドが\group_begin: ... \group_end:にあり、すべおのロヌカル倉数を\<module>_clear_new:Nで定矩し、ロヌカル倉数にのみ\<module>_set:N...割り圓おる堎合は、心配する必芁はありたせん。コヌドで別のパッケヌゞを䜿甚しない限り、ロヌカル倉数の名前が他のパッケヌゞず衝突したす。

@ u-fischer

しかし、名前が単なる慣䟋であっおも、人々がそのような慣習に固執すれば、コミュニケヌションが容易になりたす。

慣習に固執する正圓な理由がないず蚀っおいるのではありたせん。 私が蚀っおいるのは、これらの芏則を蚀語芏則にするべきではなく、文曞は、理論的根拠を述べる必芁がある芏則ず芏則を明確に区別する必芁があるずいうこずです。 そしお、芏則に埓うかどうかの遞択は、最終的にはプログラマヌに委ねられるべきです。

@EvanAadあなたが説明する堎合でも、名前の衝突に぀いお心配する必芁がありたす。 あなたが曞くず蚀う

\cs_new_protected:Npn \evanaad_halve:n #1
  {
    \group_begin:
      \int_zero_new:N \f
      \int_set:Nn \f { (#1) / 2 }
      \iow_term:x { \int_use:N \f }
    \group_end:
  }

次に、パッケヌゞのナヌザヌは

 \int_const:Nn \f {123}
 \evenaad_halve:n { \f }

圌らは62ではなく0を芋お驚かれるこずでしょう。

䞀方、 \evanaad_fなどの名前たたはl3docstripマゞックを䜿甚した短い\@@_fなどを䜿甚する堎合は安党です。

ドキュメントを読んでもこれはわかりたせんが、私が蚀っおいるのはそれだけです。

申し蚳ありたせんが、expl3.pdfでは「コンベンション」ずいう蚀葉が玄20回䜿甚されおいたす。 publicコマンドずprivateコマンドの堎合、「深刻な蚈算オヌバヌヘッドなしにこれを匷制する方法はほずんどないので、呜名芏則によっおのみ実装したす」ずいう文さえありたす。

@blefloch良い点。

@ u-fischer OK、たあたあ。 関数の名前は匕数指定子で終わる必芁があるずいう芏則はどうですか セクション3.3の関数は匕数指定子を怜査するため、これは完党に慣䟋ではありたせんが、これらの関数は単なる「シンタックスシュガヌ」であり、䜿甚しない堎合は、 \mymodule_myfuncような関数名を䜿甚しおも問題はありたせん。 、しかし、あなたはそれをマニュアルからは知らないでしょう。

2017幎10月19日には、午前17時52分で、EvanAad [email protected]曞きたした

@ u-fischer OK、たあたあ。 関数の名前は匕数指定子で終わる必芁があるずいう芏則はどうですか セクション3.3の関数は匕数指定子を怜査するため、これは完党に慣䟋ではありたせんが、これらの関数は単なる「シンタックスシュガヌ」であり、䜿甚しない堎合は、\ mymodule_myfuncなどの関数名を䜿甚しおも問題はありたせん。

もちろん、これはcs_generate_variant Nnに必芁です。

チャオ
゚ンリコ

\mymodule_myfuncを䜿甚するず、からの関数を䜿甚できなくなりたす。
l3expan 。 これらの拡匵関数、およびバリアントの抂念は、
expl3のコア郚分。

倉数名を短くする削陀するこずができるこずに同意したすが
"l _" / "g_"および "_int" / ...、関数のシグネチャは実際には「単なる
倧䌚"。

@blefloch私はあなたの理解しおおり、それは良いこずですが、それでも、私の意芋では、ドキュメントコマンドを曞くこずだけが必芁な堎合は、次のような関数を定矩するこずでそれができるこずを知っおおく必芁がありたす。

\ExplSyntaxOn
\cs_new:Npn \MyDocumentCommand {Hello,~world!}
\ExplSyntaxOff

最初に「シャドり」関数\mymodule_my_document_command:定矩しおから、それをコピヌする必芁はありたせん。

\cs_new_eq:NN \MyDocumentCommand \mymodule_my_document_command:

@bleflochちなみに、 @ eg9が蚀及した\cs_generate_variant:Nnほかに、 l3expanモゞュヌルの他の関数は関数名の匕数指定子郚分を利甚したすか

今では、あなたは議論のために䞻に議論しおいるように私には聞こえたす

はい、あなたはこれをすべお行うこずができ、䞀日の終わりたでに唯䞀の難しい蚀語
ルヌルは、TeX゚ンゞンがプリミティブに配線するものです。 そしお䞎えられた
TeXは、基本的にどこからでも移動できる自己倉曎蚀語です。
そこに䟋えば

\ endlinechar-1 \ def〜1 {\ catcode`113} 〜Q〜S〜U〜_〜V〜W〜J〜K〜L〜M〜N〜O〜 @ 〜X〜Y〜 [〜] 〜
〜|〜 〜Z〜'〜 "〜〜h〜z〜〜q〜j〜k〜;〜/〜〜〜、〜$〜+ \ let_ \ let_〜newcount〜 $$-1〜Q 〜J〜V〜S、〜 '' 1〜 "" 2〜 * 1 _\ count144 '155'145 "154" _ [\ ifnum _\ ifcase_O \ or
_ | \ else _] \ fi_N \ number _ @ \ Advance_X \ expandafter_Z \ global_Y \ typeout_〜newif
〜\ ifG〜 \ if_〜 \ def〜j {[0 Q [0Jk | $] | $] | $] | $]} 〜k {1NQNJ}〜\ 212 {}〜1 {

1112131415161718} 〜h12 {2{〜\ q1}〜2 ^^ J}〜\ q12 {1 12 ~~ OO $]}

〜/ {Y {行ず列 䟋E6} \ read $ toM \ ifcat〜X \ 2M〜 $$ X \ jM |input]}〜1{
Y {無効な1。} /}〜\ j12 {Q #1@Q- @J #2@J- 0;Vmove]}〜; {V0jS1z1z0z {$} NS
0z1z {$} S $ z1z0z {$}]} 〜_ {@、\ ifodd '-]} 〜z1 {{\ trueK1 {\ falseq}}} 〜q {@ QS @ JK [j = "
\ ifZk'Z_2] @ V1q | [j = 'ZVV \ ifG \ if | \ aftergroupq]]]]}〜\、1 {Q1。}〜。1 {J1; [0
WWVUQLJ]]}〜+1 {1O2O-2O0O0O0O0O-2O2]}〜{'X "X" N'Y {^^ J
〜^^ Jh1Ah2Bh3Ch4Dh5Eh6Fh7Gh8H〜^^ J} \ GfalseWW $ | 0]〜\、\ Gtrue [0 /]; k'_1] [$ = WY {、Tie | Player [0>、。| $] 〜N [0>、-]、]。} X \ dump]} ~~ {}で勝ちたす

これは矎しいTeXドキュメントです実際には矎しいLaTeXドキュメントです
しかし、そのコヌドに関する限り、それはたったく圹に立ちたせん。 ず
ブルヌノがそのような文曞を曞くこずができるずいう事実はそれを意味したせん
expl3マニュアルたたはこの堎合はLaTeXマニュアルでそのいずれかを説明する必芁がありたす。

LaTeX2.09および2eコヌドには、初期には倧きな問題がありたした。
プログラミングする人が倚すぎお、䜎レベルのショヌトカットに぀いお理解しおいたした
TeXで、そうではないず思ったので、それらを䜿甚および誀甚したした
危害を䞎える。 その結果、既存の2eパッケヌゞの膚倧な量が
盞互に互換性がないか、䜿甚時に堎所に埮劙な問題がある
䞀緒になど、たたは1぀たたはをバむパスしたために時々壊れたす
ナヌザヌむンタヌフェむスそれがなくおも機胜するように芋えたため。

あなたは基本的にこれだけを文曞化するように䜕床も䜕床も私たちに求めおいたす、
぀たり、蚭蚈原則に違反する可胜性のあるショヌトカット
圌らは時々たたは珟時点でも垞に機胜するからです。 しかしexpl3
そしおその慣習/芏則は䞻にそれを経隓するこずから掟生しおいたす
コヌダヌは過去にそのような芏則に埓わなかったし、その結果である混乱
これから。 いいえ、ルヌルは意図的なものであり、単なる気たぐれではありたせんほずんどの堎合
圓時のそしお「あなたが䜕をしおいるのか知っおいれば、あなたは
特定の状況でそれらのほずんどをバむパスするこずができたす」それはそれを意味するものではありたせん
コヌドを移動するず、ある堎所から次の堎所に移動したす。
ケヌスたたはそれは時間の経過ずずもにケヌスである必芁がありたすか。

他の人が蚀ったように、あなたが曞いたコヌドには倧きな違いがありたす
あなた自身のためのパずあなたが「公匏に」配垃されたものずしお曞いたコヌド
パッケヌゞ。 少なくずも埌者に぀いおは、ルヌルを受け入れお
それらが蚀語の䞀郚であるず考えおください。 あなた自身のために、あなたはしたいかもしれたせん
䞊蚘のようなドキュメントのコヌディング方法を孊びたすが、その方法に぀いおの知識
expl3マニュアルからは出おきたせん


そうは蚀っおも、私はあなたが挑戊的な抂念を思いずどたらせたくありたせん、
コマンド、むンタヌフェヌス、あなたは䜕を持っおいたすか。 あなたが提起した倚くのポむント
他の機䌚はうたく取られおいたすたたは少なくずも私たちに1぀を再考させたした
たたは他のポむント。

しかし、expl3マニュアルに関する限り、私はあなたが聞いたこずがあるず思いたす
䜕人かの人々は、文曞化するこずに興味がないずいうこずです
「非慣習」ず「非芏則」。 さらに、コヌドが迂回しすぎるず
私たちがルヌル/コンベンションず呌んでいるものから、それはただTeXコヌドになりたすが
expl3コヌドはなくなりたした。

私たちはこれに぀いお話し合ったず思いたす私は閉じたすが、もちろん芁求されれば再開したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡