Skip to main content

Guidelines

warning

Still populating with a content

Use shortcuts

It improves user experience drastically

UI Operations

  • New notebook Cmd+N, Ctrl+N
  • Open file Cmd+O, Ctrl+O
  • Save Cmd+S, Ctrl+S
  • Enter command palette Cmd+P, Ctrl+P
  • Hide/Unhide current cell Cmd+2, Alt+2
  • Clear outputs Cmd+U, Alt+U
  • Search inside cell Cmd+f, Ctrl+f
  • Shift + Alt + Space overlay window (Desktop App only)

Evaluation

  • Evaluate Shift+Enter
  • Abort Cmd+., Alt+.
  • Evaluate initialization cells Cmd+I, Alt+I

Cells

  • Ctrl+/ make fraction on selected
  • Ctrl+6 make superscript on selected
  • Ctrl+2 make square root on selected
  • Ctrl+- make subscript on selected
  • Cmd + / or Alt + / comment a line

See more keybindings in Input cell

Keep folders organized

Various functions may produce Iconize objects, for storing large chunks of data, which are copied to ./.iconized/ folder in the notebook directory. Any dropped images or files will be uploaded to ./attachments/ directory. Therefore it is important to have a clear separation between your projects.

Use NotebookStore for portability

If you want your notebook to be exported to a single editable .html Static HTML, use NotebookStore as a persistent storage for your raw data. In such case all images, graphs, and stored data will be kept.

Install everything locally

We promote the idea of storing libraries or paclets for Wolfram Language locally for each project. There is no other way to provide the reliable way of computing, storing data, reproducibility and independence from any remote resources

example of a built-in package manager
PacletRepositories[{
Github -> "https://github.com/KirillBelovTest/GPTLink"
}]

<<KirillBelov`GPTLink`

this will create a folder with all used paclets and keep them up to date if needed

Do not use Dynamic

We rely on a completely different architecture to handle interactivity and graphics updates compared to Wolfram Mathematica.

In general Manipulate is implemented as well, but it is not recommend to use often due to its impact to the system performance.

Dynamic

Buttons, sliders are event-driven, i.e. you need to subscribe to them using EventHandler. All dynamic updates are handled using Offload approach. For example

length = 1.0;
EventHandler[InputRange[-1,1,0.1], Function[l, length = l]]

Graphics[Rectangle[{-1,-1}, {length // Offload, 1}]]

Manipulate

In general there is built-in function for simple 2D plots - ManipulatePlot, however, for something more complicated - you need to craft it by yourself using building Offset and simple graphics primitives such as Line, Polygon and etc as building blocks.