問題タブ [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.
wolfram-mathematica - 指定されたレベルの各グループに固有のコンテキスト
Mathematica の最近のバージョンでは、次の方法で$Context
各セル グループに固有の値を設定するオプションが提供されています。
- 評価 > ノートブックのデフォルト コンテキスト > 各セル グループに固有
これは魅力的な概念ですが、私のコードは複数のセル グループにまたがっているため、使用できません。
every などの特定のレベルのセル グループに一意のコンテキストを指定する方法が必要ですSection
が、 everyまたはの個別のコンテキストではありません。Subsection
Subsubsection
ソリューションは、新しいセル グループが作成されるときに影響を与える必要があります。
wolfram-mathematica - 「印刷」ではなく「ワーキング」スタイル環境でグラフィックをエクスポートする方法は?
MathematicaではPDF にエクスポートするときではなく、デフォルトでscreen スタイル環境を使用することExport
を"Printout"
"Working"
最近知りました。FontSize
結果のPDFに変動が生じることがあり、非常に迷惑です。
例を試してください:
エクスポートされた「T」のサイズは、ノートブックに表示される「T」の 80% であることがわかります。これは、"Printout"
環境がデフォルトでオンになっている方法です。
Export
デフォルト"Working"
環境を強制的に使用する方法はありますか?
PS何らかの理由Magnification->1
で、「印刷」環境用にプライベートスタイルシートを設定しても影響しませんExport
。
wolfram-mathematica - カスタマイズされた InputForm と ShortInputForm の作成
Mathematicaのグラフィカル オブジェクトの内部表現を ではなく、ダブルクリックしてコードの一部を選択し、このコードを新しい入力に簡単にコピーできる、FullForm
より読みやすい形で見たいと思うことがよくあります。しかし、 はデフォルトでMathematicaのコードではなく として表示されるため、デフォルトではこれが許可されません。Mathematicaのコードとして表示させる方法はありますか?InputForm
Cell
InputForm
InputForm
String
InputForm
InputForm
また、座標のすべての長いリストが最初の座標として表示され、その後に でラップされたスキップされた座標値の数が続きSkeleton
、すべての空Lists
が削除され、すべての数字も短縮されて 6 桁以下に表示されるような短縮版を見たいと思うことがよくあります。座標のみに 6 桁を使用し、Hue
有効数字 2 桁のみを表示するなどの色指令には使用することをお勧めします。例えば、
与えるべき:
-0.9999998592131705
(は に変換され、は に変換され、 は に変換さ-1.
れることに注意してください)。1.2822827157509358*^-7
1.28228*^-7
Hue[0.9060679774997897, 0.6, 0.6]
Hue[0.91, 0.6, 0.6]
このようにして、InputForm
as Mathematicaのコードの出力を取得しShortInputForm
、このコードの短縮バージョンを提供する関数も作成したいと考えています。誰でも私を助けることができますか?
質問の最初の部分に関しては、私が望むものを達成する1つの方法を見つけました:
wolfram-mathematica - TableHeadingsが左に配置されているが、テーブルのコンテンツが右に配置されているTableForm
TableForm
オプション付きは、 MathematicaTableHeadings
フロントエンドで見栄えの良い古典的な表をすばやく簡単に表示する方法です。唯一の問題は、見出しが左に配置されているが、テーブルの内容が右に配置されているようなテーブルを表示するのが一般的であるということです。このように振る舞うことを強制することは可能ですか?または、そうでない場合、そのアナログをこのように動作させるための最良の方法は何ですか?TableForm
TableForm
wolfram-mathematica - Mathematicaノートブックでコメントを揃える方法は?
これが以前に尋ねられたかどうかはわかりません。単純なフォーマットの問題。コメント( ---- )を重ねるのが難しい場合があることに気づきました。フォントタイプの問題である必要があります。物事を正確に重ね合わせることができれば、画面上で少し見栄えが良くなります。次に例を示します。
しかし、実際には私の前のノートブックでは次のように見えます。
2行目の*)を1スペース左に移動すると、次のようになります。
だから、それを整列させることはできません。入力タイプのセル(標準セル)を使用しています。
コードなどの他のセルタイプは使用できません。誰かがこれを調整するためのトリックを知っているかどうか疑問に思いました。
ありがとう
編集1:スタイルシートの入力セルで使用されるフォントを表示するデモンストレーション
編集2:Alexey Popkovが以下に示すコードを使用して、コメントのフォントの問題を修正しました。これで、コメントを簡単に配置できるようになりました。これがスクリーンショットです
編集3:
さて、パーティーは長くは続かなかった。SetOptionsの使用はデモでは許可されていません。Alexeyによるソリューションがうまく機能し、コメントが整列して見栄えが良くなったため、残念です。
ともかく。それほど大したことではありません。少しずれたコメントで生きることができます:)
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
wolfram-mathematica - カラム内の自己破壊ボタン
Button
あるグローバルフロントエンド設定の値がであり、この値を設定して押しFalse
た後、行全体で自己破壊する場合にのみ表示されるを作成するにはどうすればよいですか?Column
True
私はこのようなものが必要です:
しかし、このコードでは、Button
それを押しても消えることはありません。自己破壊的にすることは可能ですか?
belisariusとmikuszefskiによるアイデアに基づく最終的な解決策:
重要なポイントは次のとおりです。
Dynamic
追加の変数を導入b
し、それをの値でバインドしますOptions[$FrontEnd, "VersionedPreferences"]
。- 内部を使用する代わりに、
Column
構成全体をでラップします。Dynamic
Dynamic
Column
wolfram-mathematica - 使用状況メッセージにインライン書式を追加する便利な方法
Messages
組み込み関数の使用には、インライン フォーマットが埋め込まれています。例えば:
このインライン フォーマットは、Core.nb スタイルシートの「インライン フォーマットのスタイル」セクションで定義された一連のスタイルに基づいていることがわかります。しかし、これらのスタイルのドキュメントや、s にフォーマットを追加する便利なアルゴリズムの説明は見つかりませんでしたusage
Message
。
Mathematicausage
Message
でユーザー定義の s にインライン書式を追加する便利な方法は何ですか? Core.nb スタイルシートで定義されているインライン フォーマットのデフォルト スタイルの使用規則は何ですか? Workbench などの追加コンポーネントをインストールせずに、 Mathematicaだけでパッケージ内の s にインライン フォーマットを追加したいと思います。usage
Message
PS s に埋め込まれたインライン フォーマットの構文はString
、チュートリアル ページ「ボックスの文字列表現」に部分的に記載されています。この構文に関する公式ニュースグループの関連する質問: " (ドキュメントは) 線形構文ですか? " フロントエンドでのそのような文字列の表示は、 のオプションによって制御されShowStringCharacters->False
ますCell
。
wolfram-mathematica - MakeBoxesStop ラッパーを作成することは可能ですか?
出力式は、フロントエンドがグラフィックスを表現するために使用するボックス言語にグラフィックス式を変換するために渡されることが知られています (デフォルト オプション がある場合)。たとえば、次のように評価するとします。MakeBoxes
$Output
FormatType->StandardForm
によってラップされたディスクを取得しHoldComplete
ます。
これは、その内容をタイプセット式に変換することをHoldComplete
止めないためです:MakeBoxes
だから私の質問は次のとおりです。MakeBoxes
式をヘッドでラップすると、この式をタイプセット形式に変換MakeBoxesStop
できないように、いくつかの追加定義を作成することは可能ですか? MakeBoxes
この場合、式は、シンボルに関連付けられたルールを持たない他の式として出力に表示されます。上記の場合:
PSデフォルトの動作に満足できないため、使用をInputForm
提案しないでください。
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つがこれを行っていることに気付くまで、数時間かかりました。
明らかに、これは望ましくない動作であると言いたくなります。さて、必須の質問です。ノートブックで使用される可能性のある定義を変更するたびに、ノートブック内のすべてを再実行する以外に、この背後にある動作が発生しないようにするにはどうすればよいでしょうか。Manipulate
Manipulate