From b92ede2800e582a0c7d8450f2014ce6492a18fb0 Mon Sep 17 00:00:00 2001 From: Jonathan Frederic Date: Tue, 4 Mar 2014 14:26:14 -0800 Subject: [PATCH 1/5] Added output_pyerr to python error output --- IPython/html/static/notebook/js/outputarea.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IPython/html/static/notebook/js/outputarea.js b/IPython/html/static/notebook/js/outputarea.js index 12d39da3a..2199a0836 100644 --- a/IPython/html/static/notebook/js/outputarea.js +++ b/IPython/html/static/notebook/js/outputarea.js @@ -422,7 +422,7 @@ var IPython = (function (IPython) { } s = s + '\n'; var toinsert = this.create_output_area(); - this.append_text(s, {}, toinsert); + this.append_text(s, {}, toinsert, 'output_pyerr'); this._safe_append(toinsert); } }; From 8b3c356c8dccc92855df1b18c91a4d820f2af814 Mon Sep 17 00:00:00 2001 From: Jonathan Frederic Date: Thu, 6 Mar 2014 13:22:44 -0800 Subject: [PATCH 2/5] Add extra_class arg to the rest of the append methods, use new extra_arg to add output_pyout class --- IPython/html/static/notebook/js/outputarea.js | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/IPython/html/static/notebook/js/outputarea.js b/IPython/html/static/notebook/js/outputarea.js index 2199a0836..0d4e32c7b 100644 --- a/IPython/html/static/notebook/js/outputarea.js +++ b/IPython/html/static/notebook/js/outputarea.js @@ -403,7 +403,7 @@ var IPython = (function (IPython) { if (this.prompt_area) { toinsert.find('div.prompt').addClass('output_prompt').text('Out[' + n + ']:'); } - this.append_mime_type(json, toinsert); + this.append_mime_type(json, toinsert, 'output_pyout'); this._safe_append(toinsert); // If we just output latex, typeset it. if ((json['text/latex'] !== undefined) || (json['text/html'] !== undefined)) { @@ -498,11 +498,11 @@ var IPython = (function (IPython) { } else { // don't display if we don't know how to sanitize it console.log("Ignoring untrusted " + type + " output."); - continue; + continue; } } var md = json.metadata || {}; - var toinsert = append.apply(this, [value, md, element]); + var toinsert = append.apply(this, [value, md, element, extra_class]); $([IPython.events]).trigger('output_appended.OutputArea', [type, value, md, toinsert]); return true; } @@ -511,9 +511,12 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_html = function (html, md, element) { + OutputArea.prototype.append_html = function (html, md, element, extra_class) { var type = 'text/html'; var toinsert = this.create_output_subarea(md, "output_html rendered_html", type); + if (extra_class){ + toinsert.addClass(extra_class); + } IPython.keyboard_manager.register_events(toinsert); toinsert.append(html); element.append(toinsert); @@ -521,10 +524,13 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_javascript = function (js, md, element) { + OutputArea.prototype.append_javascript = function (js, md, element, extra_class) { // We just eval the JS code, element appears in the local scope. var type = 'application/javascript'; var toinsert = this.create_output_subarea(md, "output_javascript", type); + if (extra_class){ + toinsert.addClass(extra_class); + } IPython.keyboard_manager.register_events(toinsert); element.append(toinsert); // FIXME TODO : remove `container element for 3.0` @@ -560,9 +566,12 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_svg = function (svg, md, element) { + OutputArea.prototype.append_svg = function (svg, md, element, extra_class) { var type = 'image/svg+xml'; var toinsert = this.create_output_subarea(md, "output_svg", type); + if (extra_class){ + toinsert.addClass(extra_class); + } toinsert.append(svg); element.append(toinsert); return toinsert; @@ -613,9 +622,12 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_jpeg = function (jpeg, md, element) { + OutputArea.prototype.append_jpeg = function (jpeg, md, element, extra_class) { var type = 'image/jpeg'; var toinsert = this.create_output_subarea(md, "output_jpeg", type); + if (extra_class){ + toinsert.addClass(extra_class); + } var img = $("").attr('src','data:image/jpeg;base64,'+jpeg); set_width_height(img, md, 'image/jpeg'); this._dblclick_to_reset_size(img); @@ -625,9 +637,12 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_pdf = function (pdf, md, element) { + OutputArea.prototype.append_pdf = function (pdf, md, element, extra_class) { var type = 'application/pdf'; var toinsert = this.create_output_subarea(md, "output_pdf", type); + if (extra_class){ + toinsert.addClass(extra_class); + } var a = $('').attr('href', 'data:application/pdf;base64,'+pdf); a.attr('target', '_blank'); a.text('View PDF') @@ -636,11 +651,14 @@ var IPython = (function (IPython) { return toinsert; } - OutputArea.prototype.append_latex = function (latex, md, element) { + OutputArea.prototype.append_latex = function (latex, md, element, extra_class) { // This method cannot do the typesetting because the latex first has to // be on the page. var type = 'text/latex'; var toinsert = this.create_output_subarea(md, "output_latex", type); + if (extra_class){ + toinsert.addClass(extra_class); + } toinsert.append(latex); element.append(toinsert); return toinsert; From 6169acfc6d00b927d8a8b234701cad852e810216 Mon Sep 17 00:00:00 2001 From: Jonathan Frederic Date: Thu, 6 Mar 2014 14:10:37 -0800 Subject: [PATCH 3/5] Fixed rebase issues --- IPython/html/static/notebook/js/outputarea.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IPython/html/static/notebook/js/outputarea.js b/IPython/html/static/notebook/js/outputarea.js index 0d4e32c7b..74df366a0 100644 --- a/IPython/html/static/notebook/js/outputarea.js +++ b/IPython/html/static/notebook/js/outputarea.js @@ -485,7 +485,7 @@ var IPython = (function (IPython) { 'image/jpeg' : true }; - OutputArea.prototype.append_mime_type = function (json, element) { + OutputArea.prototype.append_mime_type = function (json, element, extra_class) { for (var type_i in OutputArea.display_order) { var type = OutputArea.display_order[type_i]; var append = OutputArea.append_map[type]; @@ -498,7 +498,7 @@ var IPython = (function (IPython) { } else { // don't display if we don't know how to sanitize it console.log("Ignoring untrusted " + type + " output."); - continue; + continue; } } var md = json.metadata || {}; From 9c5bca99e2d895bff5f50a516e995877e4dc0a14 Mon Sep 17 00:00:00 2001 From: Jonathan Frederic Date: Thu, 6 Mar 2014 14:22:36 -0800 Subject: [PATCH 4/5] addClass instead of adding extra_class arg everywhere --- IPython/html/static/notebook/js/outputarea.js | 52 ++++++------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/IPython/html/static/notebook/js/outputarea.js b/IPython/html/static/notebook/js/outputarea.js index 74df366a0..379a86fbe 100644 --- a/IPython/html/static/notebook/js/outputarea.js +++ b/IPython/html/static/notebook/js/outputarea.js @@ -403,7 +403,10 @@ var IPython = (function (IPython) { if (this.prompt_area) { toinsert.find('div.prompt').addClass('output_prompt').text('Out[' + n + ']:'); } - this.append_mime_type(json, toinsert, 'output_pyout'); + var inserted = this.append_mime_type(json, toinsert); + if (inserted) { + inserted.addClass('output_pyout'); + } this._safe_append(toinsert); // If we just output latex, typeset it. if ((json['text/latex'] !== undefined) || (json['text/html'] !== undefined)) { @@ -422,7 +425,7 @@ var IPython = (function (IPython) { } s = s + '\n'; var toinsert = this.create_output_area(); - this.append_text(s, {}, toinsert, 'output_pyerr'); + this.append_text(s, {}, toinsert).addClass('output_pyerr'); this._safe_append(toinsert); } }; @@ -461,7 +464,7 @@ var IPython = (function (IPython) { // If we got here, attach a new div var toinsert = this.create_output_area(); - this.append_text(text, {}, toinsert, "output_stream "+subclass); + this.append_text(text, {}, toinsert).addClass("output_stream "+subclass); this._safe_append(toinsert); }; @@ -485,7 +488,7 @@ var IPython = (function (IPython) { 'image/jpeg' : true }; - OutputArea.prototype.append_mime_type = function (json, element, extra_class) { + OutputArea.prototype.append_mime_type = function (json, element) { for (var type_i in OutputArea.display_order) { var type = OutputArea.display_order[type_i]; var append = OutputArea.append_map[type]; @@ -502,21 +505,18 @@ var IPython = (function (IPython) { } } var md = json.metadata || {}; - var toinsert = append.apply(this, [value, md, element, extra_class]); + var toinsert = append.apply(this, [value, md, element]); $([IPython.events]).trigger('output_appended.OutputArea', [type, value, md, toinsert]); - return true; + return toinsert; } } - return false; + return null; }; - OutputArea.prototype.append_html = function (html, md, element, extra_class) { + OutputArea.prototype.append_html = function (html, md, element) { var type = 'text/html'; var toinsert = this.create_output_subarea(md, "output_html rendered_html", type); - if (extra_class){ - toinsert.addClass(extra_class); - } IPython.keyboard_manager.register_events(toinsert); toinsert.append(html); element.append(toinsert); @@ -524,13 +524,10 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_javascript = function (js, md, element, extra_class) { + OutputArea.prototype.append_javascript = function (js, md, element) { // We just eval the JS code, element appears in the local scope. var type = 'application/javascript'; var toinsert = this.create_output_subarea(md, "output_javascript", type); - if (extra_class){ - toinsert.addClass(extra_class); - } IPython.keyboard_manager.register_events(toinsert); element.append(toinsert); // FIXME TODO : remove `container element for 3.0` @@ -548,16 +545,13 @@ var IPython = (function (IPython) { }; - OutputArea.prototype.append_text = function (data, md, element, extra_class) { + OutputArea.prototype.append_text = function (data, md, element) { var type = 'text/plain'; var toinsert = this.create_output_subarea(md, "output_text", type); // escape ANSI & HTML specials in plaintext: data = utils.fixConsole(data); data = utils.fixCarriageReturn(data); data = utils.autoLinkUrls(data); - if (extra_class){ - toinsert.addClass(extra_class); - } // The only user content injected with this HTML call is // escaped by the fixConsole() method. toinsert.append($("
").html(data));
@@ -566,12 +560,9 @@ var IPython = (function (IPython) {
     };
 
 
-    OutputArea.prototype.append_svg = function (svg, md, element, extra_class) {
+    OutputArea.prototype.append_svg = function (svg, md, element) {
         var type = 'image/svg+xml';
         var toinsert = this.create_output_subarea(md, "output_svg", type);
-        if (extra_class){
-            toinsert.addClass(extra_class);
-        }
         toinsert.append(svg);
         element.append(toinsert);
         return toinsert;
@@ -622,12 +613,9 @@ var IPython = (function (IPython) {
     };
 
 
-    OutputArea.prototype.append_jpeg = function (jpeg, md, element, extra_class) {
+    OutputArea.prototype.append_jpeg = function (jpeg, md, element) {
         var type = 'image/jpeg';
         var toinsert = this.create_output_subarea(md, "output_jpeg", type);
-        if (extra_class){
-            toinsert.addClass(extra_class);
-        }
         var img = $("").attr('src','data:image/jpeg;base64,'+jpeg);
         set_width_height(img, md, 'image/jpeg');
         this._dblclick_to_reset_size(img);
@@ -637,12 +625,9 @@ var IPython = (function (IPython) {
     };
 
 
-    OutputArea.prototype.append_pdf = function (pdf, md, element, extra_class) {
+    OutputArea.prototype.append_pdf = function (pdf, md, element) {
         var type = 'application/pdf';
         var toinsert = this.create_output_subarea(md, "output_pdf", type);
-        if (extra_class){
-            toinsert.addClass(extra_class);
-        }
         var a = $('').attr('href', 'data:application/pdf;base64,'+pdf);
         a.attr('target', '_blank');
         a.text('View PDF')
@@ -651,14 +636,11 @@ var IPython = (function (IPython) {
         return toinsert;
      }
 
-    OutputArea.prototype.append_latex = function (latex, md, element, extra_class) {
+    OutputArea.prototype.append_latex = function (latex, md, element) {
         // This method cannot do the typesetting because the latex first has to
         // be on the page.
         var type = 'text/latex';
         var toinsert = this.create_output_subarea(md, "output_latex", type);
-        if (extra_class){
-            toinsert.addClass(extra_class);
-        }
         toinsert.append(latex);
         element.append(toinsert);
         return toinsert;

From f62ce75a6200e3a9b16008f391867e02158521f5 Mon Sep 17 00:00:00 2001
From: "Brian E. Granger" 
Date: Thu, 6 Mar 2014 16:36:39 -0800
Subject: [PATCH 5/5] Lots of CSS tweaks to get nbconvert output looking right.

---
 IPython/html/static/base/less/variables.less  |  1 -
 IPython/html/static/notebook/css/override.css |  1 -
 .../html/static/notebook/less/codecell.less   | 22 +++++++++++++++++++
 .../html/static/notebook/less/notebook.less   |  2 ++
 IPython/html/static/notebook/less/pager.less  |  2 ++
 .../html/static/notebook/less/variables.less  |  5 ++++-
 IPython/html/static/style/ipython.min.css     |  8 ++++---
 IPython/html/static/style/style.min.css       | 12 +++++-----
 8 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/IPython/html/static/base/less/variables.less b/IPython/html/static/base/less/variables.less
index 87f9e6692..42d9f6146 100644
--- a/IPython/html/static/base/less/variables.less
+++ b/IPython/html/static/base/less/variables.less
@@ -7,4 +7,3 @@
 
 // Our own global variables for all pages go here
 
-@code_line_height:      1.231em;
diff --git a/IPython/html/static/notebook/css/override.css b/IPython/html/static/notebook/css/override.css
index 6c0fb7513..170f1f740 100644
--- a/IPython/html/static/notebook/css/override.css
+++ b/IPython/html/static/notebook/css/override.css
@@ -4,5 +4,4 @@ a hack to deal with our current css styles and no new styling should be added in
 
 #ipython-main-app {
     position: relative;
-    font-size: 110%;
 }
\ No newline at end of file
diff --git a/IPython/html/static/notebook/less/codecell.less b/IPython/html/static/notebook/less/codecell.less
index c8d570f15..777f18584 100644
--- a/IPython/html/static/notebook/less/codecell.less
+++ b/IPython/html/static/notebook/less/codecell.less
@@ -16,3 +16,25 @@ div.input_prompt {
     border-top: 1px solid transparent;
 }
 
+
+// The styles related to div.highlight are for nbconvert HTML output only. This works
+// because the .highlight div isn't present in the live notebook. We could put this into
+// nbconvert, but it easily falls out of sync, can't use our less variables and doesn't
+// help the basic template when paired with our CSS.
+
+div.input_area > div.highlight {
+    margin: @code_padding;
+    border: none;
+    padding: 0px;
+    background-color: transparent;
+}
+
+div.input_area > div.highlight > pre {
+    margin: 0px;
+    border: 0px;
+    padding: 0px;
+    background-color: transparent;
+    font-size: @notebook_font_size;
+    line-height: @code_line_height;
+}
+
diff --git a/IPython/html/static/notebook/less/notebook.less b/IPython/html/static/notebook/less/notebook.less
index b89a643b9..8c6589e47 100644
--- a/IPython/html/static/notebook/less/notebook.less
+++ b/IPython/html/static/notebook/less/notebook.less
@@ -21,6 +21,8 @@ div#notebook_panel {
     .box-shadow(0 -1px 10px rgba(0,0,0,.1));
 }
 div#notebook {
+    font-size: @notebook_font_size;
+    line-height: @notebook_line_height;
     overflow-y: scroll;
     overflow-x: auto;
     width: 100%;
diff --git a/IPython/html/static/notebook/less/pager.less b/IPython/html/static/notebook/less/pager.less
index 3ba80e489..961550a28 100644
--- a/IPython/html/static/notebook/less/pager.less
+++ b/IPython/html/static/notebook/less/pager.less
@@ -8,6 +8,8 @@ div#pager_splitter {
 }
 
 div#pager {
+    font-size: @notebook_font_size;
+    line-height: @notebook_line_height;
     overflow: auto;
     display: none;
 
diff --git a/IPython/html/static/notebook/less/variables.less b/IPython/html/static/notebook/less/variables.less
index 0d5540cd7..4a07a22ee 100644
--- a/IPython/html/static/notebook/less/variables.less
+++ b/IPython/html/static/notebook/less/variables.less
@@ -6,5 +6,8 @@
 @border_color:                  darken(@cell_selected_background, 31%);
 @light_border_color:            darken(@cell_selected_background, 17%);
 @border_width:                  1px;
-@code_padding:                  0.4em;
+@notebook_font_size:            14px;
+@notebook_line_height:          20px;
+@code_line_height:              1.21429em;  // changed from 1.231 to get 17px even
+@code_padding:                  0.4em;  // 5.6 px
 
diff --git a/IPython/html/static/style/ipython.min.css b/IPython/html/static/style/ipython.min.css
index d940f336b..8d4fadedc 100644
--- a/IPython/html/static/style/ipython.min.css
+++ b/IPython/html/static/style/ipython.min.css
@@ -71,13 +71,15 @@ input.engine_num_input{width:60px}
 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}div.cell.selected{border-radius:4px;border:thin #ababab solid}
 div.cell.edit_mode{border-radius:4px;border:thin #008000 solid}
 div.cell{width:100%;padding:5px 5px 5px 0;margin:0;outline:none}
-div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.231em}
+div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em}
 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}
 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7}
 div.prompt:empty{padding-top:0;padding-bottom:0}
 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}
 div.input_prompt{color:#000080;border-top:1px solid transparent}
-.CodeMirror{line-height:1.231em;height:auto;background:none;}
+div.input_area>div.highlight{margin:.4em;border:none;padding:0;background-color:transparent}
+div.input_area>div.highlight>pre{margin:0;border:0;padding:0;background-color:transparent;font-size:14px;line-height:1.21429em}
+.CodeMirror{line-height:1.21429em;height:auto;background:none;}
 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}
 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden}}.CodeMirror-lines{padding:.4em}
 .CodeMirror-linenumber{padding:0 8px 0 4px}
@@ -116,7 +118,7 @@ div.output_area .rendered_html img{margin-left:0;margin-right:0}
 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}
 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:#000;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit}
 div.output_subarea{padding:.4em .4em 0 .4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}
-div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.231em}
+div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.21429em}
 div.output_stderr{background:#fdd;}
 div.output_latex{text-align:left}
 div.output_javascript:empty{padding:0}
diff --git a/IPython/html/static/style/style.min.css b/IPython/html/static/style/style.min.css
index c78ebe68a..e36a823bc 100644
--- a/IPython/html/static/style/style.min.css
+++ b/IPython/html/static/style/style.min.css
@@ -1348,13 +1348,15 @@ input.engine_num_input{width:60px}
 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}div.cell.selected{border-radius:4px;border:thin #ababab solid}
 div.cell.edit_mode{border-radius:4px;border:thin #008000 solid}
 div.cell{width:100%;padding:5px 5px 5px 0;margin:0;outline:none}
-div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.231em}
+div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em}
 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}
 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7}
 div.prompt:empty{padding-top:0;padding-bottom:0}
 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}
 div.input_prompt{color:#000080;border-top:1px solid transparent}
-.CodeMirror{line-height:1.231em;height:auto;background:none;}
+div.input_area>div.highlight{margin:.4em;border:none;padding:0;background-color:transparent}
+div.input_area>div.highlight>pre{margin:0;border:0;padding:0;background-color:transparent;font-size:14px;line-height:1.21429em}
+.CodeMirror{line-height:1.21429em;height:auto;background:none;}
 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}
 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden}}.CodeMirror-lines{padding:.4em}
 .CodeMirror-linenumber{padding:0 8px 0 4px}
@@ -1393,7 +1395,7 @@ div.output_area .rendered_html img{margin-left:0;margin-right:0}
 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}
 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:#000;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit}
 div.output_subarea{padding:.4em .4em 0 .4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}
-div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.231em}
+div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.21429em}
 div.output_stderr{background:#fdd;}
 div.output_latex{text-align:left}
 div.output_javascript:empty{padding:0}
@@ -1474,7 +1476,7 @@ body{background-color:#fff}
 body.notebook_app{overflow:hidden}
 span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%}
 div#notebook_panel{margin:0 0 0 0;padding:0;-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}
-div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:1em 0 1em 0;margin:0;border-top:1px solid #ababab;outline:none;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
+div#notebook{font-size:14px;line-height:20px;overflow-y:scroll;overflow-x:auto;width:100%;padding:1em 0 1em 0;margin:0;border-top:1px solid #ababab;outline:none;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
 div.ui-widget-content{border:1px solid #ababab;outline:none}
 pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:.4em;padding-left:2em}
 p.dialog{padding:.2em}
@@ -1507,7 +1509,7 @@ ul#help_menu li a{overflow:hidden;padding-right:2.2em}ul#help_menu li a i{margin
 .notification_widget{color:#777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240,240,240,0.5)}.notification_widget.span{padding-right:2px}
 div#pager_splitter{height:8px}
 #pager-container{position:relative;padding:15px 0}
-div#pager{overflow:auto;display:none}div#pager pre{font-size:13px;line-height:1.231em;color:#000;background-color:#f7f7f7;padding:.4em}
+div#pager{font-size:14px;line-height:20px;overflow:auto;display:none}div#pager pre{font-size:13px;line-height:1.21429em;color:#000;background-color:#f7f7f7;padding:.4em}
 .shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace}
 .shortcut_descr{display:inline-block}
 span#save_widget{padding:0 5px;margin-top:12px}