| """Simple magics for display formats""" |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
|
|
| |
| from IPython.display import display, Javascript, Latex, SVG, HTML, Markdown |
| from IPython.core.magic import ( |
| Magics, magics_class, cell_magic |
| ) |
| from IPython.core import magic_arguments |
|
|
| |
| |
| |
|
|
|
|
| @magics_class |
| class DisplayMagics(Magics): |
| """Magics for displaying various output types with literals |
| |
| Defines javascript/latex/svg/html cell magics for writing |
| blocks in those languages, to be rendered in the frontend. |
| """ |
|
|
| @cell_magic |
| def js(self, line, cell): |
| """Run the cell block of Javascript code |
| |
| Alias of `%%javascript` |
| |
| Starting with IPython 8.0 %%javascript is pending deprecation to be replaced |
| by a more flexible system |
| |
| Please See https://github.com/ipython/ipython/issues/13376 |
| """ |
| self.javascript(line, cell) |
|
|
| @cell_magic |
| def javascript(self, line, cell): |
| """Run the cell block of Javascript code |
| |
| Starting with IPython 8.0 %%javascript is pending deprecation to be replaced |
| by a more flexible system |
| |
| Please See https://github.com/ipython/ipython/issues/13376 |
| """ |
| display(Javascript(cell)) |
|
|
|
|
| @cell_magic |
| def latex(self, line, cell): |
| """Render the cell as a block of LaTeX |
| |
| The subset of LaTeX which is supported depends on the implementation in |
| the client. In the Jupyter Notebook, this magic only renders the subset |
| of LaTeX defined by MathJax |
| [here](https://docs.mathjax.org/en/v2.5-latest/tex.html).""" |
| display(Latex(cell)) |
|
|
| @cell_magic |
| def svg(self, line, cell): |
| """Render the cell as an SVG literal""" |
| display(SVG(cell)) |
|
|
| @magic_arguments.magic_arguments() |
| @magic_arguments.argument( |
| '--isolated', action='store_true', default=False, |
| help="""Annotate the cell as 'isolated'. |
| Isolated cells are rendered inside their own <iframe> tag""" |
| ) |
| @cell_magic |
| def html(self, line, cell): |
| """Render the cell as a block of HTML""" |
| args = magic_arguments.parse_argstring(self.html, line) |
| html = HTML(cell) |
| if args.isolated: |
| display(html, metadata={'text/html':{'isolated':True}}) |
| else: |
| display(html) |
|
|
| @cell_magic |
| def markdown(self, line, cell): |
| """Render the cell as Markdown text block""" |
| display(Markdown(cell)) |
|
|