問題タブ [mathematica-frontend]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
295 参照

wolfram-mathematica - 指定されたレベルの各グループに固有のコンテキスト

Mathematica の最近のバージョンでは、次の方法で$Context各セル グループに固有の値を設定するオプションが提供されています。

  • 評価 > ノートブックのデフォルト コンテキスト > 各セル グループに固有

これは魅力的な概念ですが、私のコードは複数のセル グループにまたがっているため、使用できません。

every などの特定のレベルのセル グループに一意のコンテキストを指定する方法が必要ですSectionが、 everyまたはの個別のコンテキストではありませんSubsectionSubsubsection

ソリューションは、新しいセル グループが作成されるときに影響を与える必要があります。

0 投票する
1 に答える
1640 参照

wolfram-mathematica - 「印刷」ではなく「ワーキング」スタイル環境でグラフィックをエクスポートする方法は?

MathematicaではPDF にエクスポートするときではなく、デフォルトでscreen スタイル環境を使用することExport"Printout""Working"最近知りました。FontSize結果のPDFに変動が生じることがあり、非常に迷惑です。

例を試してください:

スクリーンショット

エクスポートされた「T」のサイズは、ノートブックに表示される「T」の 80% であることがわかります。これは、"Printout"環境がデフォルトでオンになっている方法です。

Exportデフォルト"Working"環境を強制的に使用する方法はありますか?

PS何らかの理由Magnification->1で、「印刷」環境用にプライベートスタイルシートを設定しても影響しませんExport

0 投票する
2 に答える
347 参照

wolfram-mathematica - カスタマイズされた InputForm と ShortInputForm の作成

Mathematicaのグラフィカル オブジェクトの内部表現を ではなく、ダブルクリックしてコードの一部を選択し、このコードを新しい入力に簡単にコピーできる、FullFormより読みやすい形で見たいと思うことがよくあります。しかし、 はデフォルトでMathematicaのコードではなく として表示されるため、デフォルトではこれが許可されません。Mathematicaのコードとして表示させる方法はありますか?InputFormCellInputFormInputFormStringInputForm

InputFormまた、座標のすべての長いリストが最初の座標として表示され、その後に でラップされたスキップされた座標値の数が続きSkeleton、すべての空Listsが削除され、すべての数字も短縮されて 6 桁以下に表示されるような短縮版を見たいと思うことがよくあります。座標のみに 6 桁を使用し、Hue有効数字 2 桁のみを表示するなどの色指令には使用することをお勧めします。例えば、

与えるべき:

-0.9999998592131705(は に変換され、は に変換され、 は に変換さ-1.れることに注意してください)。1.2822827157509358*^-71.28228*^-7Hue[0.9060679774997897, 0.6, 0.6]Hue[0.91, 0.6, 0.6]

このようにして、InputFormas Mathematicaのコードの出力を取得しShortInputForm、このコードの短縮バージョンを提供する関数も作成したいと考えています。誰でも私を助けることができますか?


質問の最初の部分に関しては、私が望むものを達成する1つの方法を見つけました:

0 投票する
3 に答える
1160 参照

wolfram-mathematica - TableHeadingsが左に配置されているが、テーブルのコンテンツが右に配置されているTableForm

TableFormオプション付きは、 MathematicaTableHeadingsフロントエンドで見栄えの良い古典的な表をすばやく簡単に表示する方法です。唯一の問題は、見出しが左に配置されているが、テーブルの内容が右に配置されているようなテーブルを表示するのが一般的であるということです。このように振る舞うことを強制することは可能ですか?または、そうでない場合、そのアナログをこのように動作させるための最良の方法は何ですか?TableFormTableForm

0 投票する
2 に答える
5783 参照

wolfram-mathematica - Mathematicaノートブックでコメントを揃える方法は?

これが以前に尋ねられたかどうかはわかりません。単純なフォーマットの問題。コメント( ---- )を重ねるのが難しい場合があることに気づきました。フォントタイプの問題である必要があります。物事を正確に重ね合わせることができれば、画面上で少し見栄えが良くなります。次に例を示します。

しかし、実際には私の前のノートブックでは次のように見えます。

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

2行目の*)を1スペース左に移動すると、次のようになります。

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

だから、それを整列させることはできません。入力タイプのセル(標準セル)を使用しています。

コードなどの他のセルタイプは使用できません。誰かがこれを調整するためのトリックを知っているかどうか疑問に思いました。

ありがとう

編集1:スタイルシートの入力セルで使用されるフォントを表示するデモンストレーション

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

編集2:Alexey Popkovが以下に示すコードを使用して、コメントのフォントの問題を修正しました。これで、コメントを簡単に配置できるようになりました。これがスクリーンショットです ここに画像の説明を入力してください

編集3:

さて、パーティーは長くは続かなかった。SetOptionsの使用はデモでは許可されていません。Alexeyによるソリューションがうまく機能し、コメントが整列して見栄えが良くなったため、残念です。

ともかく。それほど大したことではありません。少しずれたコメントで生きることができます:)

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

0 投票する
1 に答える
252 参照

windows - インストールされているMathematicaのバージョン間で.NB-associationsを切り替えるためのパレットを作成する

WindowsでインストールされているMathematicaのバージョン間で.NBファイルの関連付けを切り替えるためのパレットを作成したいと思います。

現時点では、インストールされているMathematicaのバージョンを列挙し、それらを切り替えるための次のコードを開発しました。

1)インストールされているバージョンのMathematicaのシステムレジストリキーの名前のリストを取得する:

2)システムレジストリでMathematicaフロントエンドを起動するためのコマンドラインオプション -b(スプラッシュ画面を無効にする)と(インストールされている-directlaunch最新のMathematicaバージョンを起動するメカニズムを無効にする)をコマンドライン文字列に追加する関数:

この関数は次のように使用できます。

3)現在の.NBファイルの関連付けを取得するための関数:

4)インストールされているすべてのMathematicaバージョンを切り替えるためのボタン(しかし、おそらくとを使っDynamicてもっとうまく実装できると思いますSetterBar):

上記に加えて、インストールされている異なるMathematicaバージョン間でのプリファレンスの共有を無効にするコマンドがあります(デフォルトでは、インストールされているすべてのバージョンがフロントエンド設定を保存するために1つのファイルを使用します):

だから私の問題は:

Palette.NBファイルの現在のファイルの関連付けを動的に表示し、ボタンをクリックしてそれらを切り替えることができる小さなファイルを作成してインストールするにはどうすればよいですか?たぶんそれだけで実装できると思いますが、まだパレット作成のSetterBar経験がありません。Dynamic

0 投票する
2 に答える
167 参照

wolfram-mathematica - カラム内の自己破壊ボタン

Buttonあるグローバルフロントエンド設定の値がであり、この値を設定して押しFalseた後、行全体で自己破壊する場合にのみ表示されるを作成するにはどうすればよいですか?ColumnTrue

私はこのようなものが必要です:

しかし、このコードでは、Buttonそれを押しても消えることはありません。自己破壊的にすることは可能ですか?


belisariusmikuszefskiによるアイデアに基づく最終的な解決策:

重要なポイントは次のとおりです。

  • Dynamic追加の変数を導入bし、それをの値でバインドしますOptions[$FrontEnd, "VersionedPreferences"]
  • 内部を使用する代わりに、 Column構成全体をでラップします。DynamicDynamicColumn
0 投票する
3 に答える
891 参照

wolfram-mathematica - 使用状況メッセージにインライン書式を追加する便利な方法

Messages組み込み関数の使用には、インライン フォーマットが埋め込まれています。例えば:

このインライン フォーマットは、Core.nb スタイルシートの「インライン フォーマットのスタイル」セクションで定義された一連のスタイルに基づいていることがわかります。しかし、これらのスタイルのドキュメントや、s にフォーマットを追加する便利なアルゴリズムの説明は見つかりませんでしたusage Message

Mathematicausage Messageでユーザー定義の s にインライン書式を追加する便利な方法は何ですか? Core.nb スタイルシートで定義されているインライン フォーマットのデフォルト スタイルの使用規則は何ですか? Workbench などの追加コンポーネントをインストールせずに、 Mathematicaだけでパッケージ内の s にインライン フォーマットを追加したいと思います。usage Message

PS s に埋め込まれたインライン フォーマットの構文はString、チュートリアル ページ「ボックスの文字列表現」に部分的に記載されています。この構文に関する公式ニュースグループの関連する質問: " (ドキュメントは) 線形構文ですか? " フロントエンドでのそのような文字列の表示は、 のオプションによって制御されShowStringCharacters->FalseますCell

0 投票する
1 に答える
160 参照

wolfram-mathematica - MakeBoxesStop ラッパーを作成することは可能ですか?

出力式は、フロントエンドがグラフィックスを表現するために使用するボックス言語にグラフィックス式を変換するために渡されることが知られています (デフォルト オプション がある場合)。たとえば、次のように評価するとします。MakeBoxes$OutputFormatType->StandardForm

によってラップされたディスクを取得しHoldCompleteます。

スクリーンショット

これは、その内容をタイプセット式に変換することをHoldComplete止めないためです:MakeBoxes

だから私の質問は次のとおりです。MakeBoxes式をヘッドでラップすると、この式をタイプセット形式に変換MakeBoxesStopできないように、いくつかの追加定義を作成することは可能ですか? MakeBoxesこの場合、式は、シンボルに関連付けられたルールを持たない他の式として出力に表示されます。上記の場合:

スクリーンショット

PSデフォルトの動作に満足できないため、使用をInputForm提案しないでください。

0 投票する
2 に答える
1116 参照

wolfram-mathematica - SaveDefinitionsは危険と見なされます

SaveDefinitionsの良いオプションですManipulate。これによりManipulate、作成に使用された定義が操作パネル内に保存されます。この方法で作成された操作は、空のノートブックにコピーでき、それでも単独で機能します。さらに、そのような多くの操作を含む作業中のノートブックも、開いたときにその下にエラーメッセージが印刷されたピンク色のボックスの急増にはなりません。素晴らしい!

しかし、このすべての良さには暗い面があり、気づいていないと本当に激しく噛む可能性があります。私はこれを数日間取り組んできたノートブックに入れましたが、問題を再現する段階的なおもちゃの例のシナリオを紹介します。

このシナリオでは、素敵な波状関数のプロットを表示するように作成したいManipulateので、これを定義します(このようなウィンドウサイズを作成してください。これは重要です)。

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

定義は素晴らしいので、次回のためにそれを保持し、初期化セルにします。次に、を追加してManipulate実行します。

すべてがうまく機能し、操作は本当に輝いています、それは良い日です。

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

あなたの妄想的な自己であるだけで、あなたは定義がOKであるかどうかをチェックします:

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

ええ、まだすべてがチェックアウトしています。罰金。しかし今、より良い波状関数は正弦であることがあなたに思い浮かぶので、あなたは定義を変更し、実行し、そしてパラノイアである、チェックしてください:

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

すべてはまだ大丈夫です。あなたはあなたの仕事を保存してやめる一日のハードワークから準備ができています。[カーネルを終了]

翌日。あなたは仕事を再開します。ノートブックの初期化セルを評価します。定義はまだ良いですか?小切手。

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

次に、[操作]ボックスまで下にスクロールし(のおかげで再実行する必要はありませんSaveDefinitions)、スライダーで少し遊んでください。そして、上にスクロールします。

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

あなたはパラノイアなので、もう一度fの定義を確認します。

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

見よ、誰かがあなたの後ろの定義を変えた!そして、In []番号( :def of f、first?、second?)Informationに従って、最初と2番目(?)のチェックの間に何も実行されませんでした。In[1]In[2]In[3]

どうしたの?もちろんManipulateです。AFullFormはその内部構造を明らかにします:

そこに犯人がいます。Manipulateボックスの初期化部分はfを再度定義しますが、定義を変更した後に再評価しなかったため、古いバージョンです。操作ボックスが画面に表示されるとすぐに評価され、古い定義が元に戻ります。グローバルに!

もちろん、このおもちゃの例では、何か奇妙なことが起こっていることがすぐにわかります。私の場合、大きなノートブックに大きなモジュールがあり、デバッグ後に小さな部分を変更しました。それはうまくいったように見えましたが、翌日、再びヒットする前に私を悩ませていたのと同じバグがありました。手元にある問題をあらゆる側面から研究するために使用したいくつかのマニピュレートの1つがこれを行っていることに気付くまで、数時間かかりました。

明らかに、これは望ましくない動作であると言いたくなります。さて、必須の質問です。ノートブックで使用される可能性のある定義を変更するたびに、ノートブック内のすべてを再実行する以外に、この背後にある動作が発生しないようにするにはどうすればよいでしょうか。ManipulateManipulate