The effect of formatting will be rendered only after the markdown cell is run. Note that Jupyter notebook markdown doesn’t support WYSWYG feature. When cells are run, the output is as follows − The rendering will take place when you run the cell either from cell menu or run button of toolbar.įollowing screenshot shows markdown cells in edit mode with headers of three different levels. It means single # will render biggest header line, and six # symbols renders header of smallest font size. Use as many # symbols corresponding to level of header you want. Start the text in markdown cell by # symbol. Header cellĪ markdown cell can display header text of 6 sizes, similar to HTML headers.
#JUPYTERLAB TEXT EDITOR CODE#
In order to enter a text which should not be treated as code by Notebook server, it must be first converted as markdown cell either from cell menu or by using keyboard shortcut M while in command mode. Markdown cell displays text which can be formatted using markdown language.
Setting IPython as Default Python Environment.ScrollViewer sv = VisualTreeHelper.GetChild (dp, 0) as ScrollViewer String strLine = Text.Substring (iOffset, iOffsetNext - iOffset) ĭrawingContext.DrawText (formattedText, new Point (leftMargin, topMargin - this.VerticalOffset)) ĭependencyObject dp = VisualTreeHelper.GetChild (this, 0) Int iOffsetNext = GetCharacterIndexFromLineIndex (iIdx + 1) Int iOffset = GetCharacterIndexFromLineIndex (iIdx) Int iEndVisibleLine = GetLastVisibleLineIndex () įor (int iIdx = iStartVisibleLine iIdx <= iEndVisibleLine - 1 ++iIdx) Int iStartVisibleLine = GetFirstVisibleLineIndex () ***formattedText.MaxTextWidth = this.ViewportWidth // space for scrollbar***įormattedText.MaxTextHeight = Math.Max (this.ActualHeight + this.VerticalOffset, 0) //Adjust for scrollingĭrawingContext.PushClip (new RectangleGeometry (new Rect (0, 0, this.ActualWidth, this.ActualHeight))) //restrict text to textbox Protected override void OnRender ( drawingContext)įormattedText formattedText = new FormattedText (īaseForeground) //Text that matches the textbox'sĭouble leftMargin = 4.0 + ĭouble topMargin = 2 + Void txtTest_TextChanged (object sender, TextChangedEventArgs e) New FrameworkPropertyMetadata (new SolidColorBrush (Colors.Black), FrameworkPropertyMetadataOptions.AffectsRender)) Public static DependencyProperty BaseForegroundProperty = DependencyProperty.Register ("BaseForeground", typeof (Brush), typeof (CodeBox), This.TextWrapping = īase.TextWrapping = This.Background = new SolidColorBrush (Colors.Transparent) This.Foreground = new SolidColorBrush (Colors.Transparent) This.TextChanged += new TextChangedEventHandler (txtTest_TextChanged) SolidColorBrush m_brBlack = new SolidColorBrush (Colors.Black)
SolidColorBrush m_brOrange = new SolidColorBrush (Colors.Orange) SolidColorBrush m_brRed = new SolidColorBrush (Colors.Red) The rest (that has been reomved) is just code that does more text-coloring. This is the code-behind C#, lengthy, but it has been trimmed down to only enough to show what's going on. I'm fairly new to WPF and there's much to it that is still mysterious to me, so the solution may be obvious to someone with more experience with it. "formattedText.MaxTextWidth = this.ViewportWidth // space for scrollbar"
I've tracked the problem to a line in OnRender: The scrollbar is visible and it changes the size of the drag button to show that it sees that the unwrapped text is wider than the viewing area, but since the text has already been wrapped, dragging it doesn't make any difference. I've tried adding a horizontal scrollbar but that doesn't help. In a normal TextBox, simply setting the TextWrapping property to NoWrap does the trick, but not with CodeBox (which inherits from TextBox in code-behind).
I've used the CodeBox project from CodeProject and it works very well except for the fact that I can't disable text wrapping.