From: "Mikhail Titov" <mlt@gmx.us>
To: emacs-orgmode@gnu.org
Subject: [babel, html, howto] Saving vertical space in exported HTML or result thumbnails & excerpts
Date: Tue, 5 Jun 2012 14:50:11 -0500 [thread overview]
Message-ID: <003501cd4354$6b48cf20$41da6d60$@us> (raw)
[-- Attachment #1: Type: text/plain, Size: 1483 bytes --]
Hello!
I decided to share a recipe and I think the mailing list is a good place for that.
The waste of vertical space “really grinds my gears”. I mean whenever I want a high-def image from babel or tons of detailed text on output from some code blocks, I get it there making it hard to navigate over the rest of the document. I saw [1] uses lightbox [2] but uses MACRO for that. This is not quite usable for babel output which inserts just plain images. I did not feel like hacking exporter. So I dived into jquery and lightbox manual and came up with some JS code and CSS that I think make final output look awesome if many high-resolution images are present. To save on space occupied by long code block text results, I reused [3] with some changes (probably because of jquery changes…. I don’t know that stuff).
Include something like the following in the header of your org doc. Look into my.js (renamed to txt to pass MUA/MTA) for details.
#+STYLE: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
#+STYLE: <script src="js/lightbox.js"></script>
#+STYLE: <script src="js/my.js"></script>
Make sure you do use #+Caption: before your figures to make a title for lightbox otherwise you won’t get <div class=”figure”> and things will break.
[1] http://orgmode.org/worg/color-themes-screenshot.html
[2] http://lokeshdhakar.com/projects/lightbox2/
[3] http://be.twixt.us/jquery/codeExpander.php
Mikhail
[-- Attachment #2: my.js.txt --]
[-- Type: text/plain, Size: 1721 bytes --]
$(document).ready(function(){
$("div.figure p img").each(function() {
// if ($(this).css("height") > 300) {
var src = $(this).attr('src').replace('img_T','img_L');
var title = $(this).parent().next().text();
var a = $('<a/>').attr('href', src).attr('rel', 'lightbox[figures]').attr('title', title);
$(this).wrap(a);
// }
});
// http://be.twixt.us/jquery/codeExpander.php
$("pre.example").each(function() { // find specific elements
if ($(this).height() > 300) { // filter on CSS height > 100
var _startHeight = parseInt($(this).css("height")); // store current height
$(this).css("height", "300px") // set height to 100px
.wrap("<div>") // add a div to group new elements
.parent() // Select previously added div
// add new child for clickable area
.append("<div class=\"ceexpand\">Expand</div>")
.find("div.ceexpand") // select new child
.hover( // add a hover class
function() { $(this).toggleClass("cehover") },
function() { $(this).toggleClass("cehover") }
)
.toggle( // toggle the click action of the div
// Position Closed -> Open It
function () {
// swap the class and change the HTML
$(this).toggleClass("cecollapse").html("Collapse")
// select the pre and animate it open
.siblings("pre").animate({height: _startHeight});
},
// Position Open -> Close It
function () {
// swap the class and change the html
$(this).toggleClass("cecollapse").html("Expand")
// select the pre and animate it closed
.siblings("pre").animate({height: 300});
}
);
}
});
});
[-- Attachment #3: my.css --]
[-- Type: text/css, Size: 1427 bytes --]
div.figure p img { max-height: 300px; }
pre.src, pre.example { font-size: 75%; }
/* pre.example { max-height: 50ex; } */
pre.example {
margin-bottom: 0;
overflow: auto;
}
div.ceexpand {
text-align: center;
border: 1px solid #666;
border-top: 0;
background: #efefef url(img/arrow_down.png) top right no-repeat;
line-height: 16px;
width: 200px;
margin: 0 0 0 auto;
}
div.cecollapse {
background: #efefef url(img/arrow_up.png) top right no-repeat;
}
div.cehover {
background-color: #ccc;
cursor: pointer;
}
/* TOC inspired by http://jashkenas.github.com/coffee-script */
#table-of-contents {
font-size: 10pt;
position: fixed;
right: 0em;
top: 0em;
background: white;
-webkit-box-shadow: 0 0 1em #777777;
-moz-box-shadow: 0 0 1em #777777;
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomleft: 5px;
text-align: right;
/* ensure doesn't flow off the screen when expanded */
max-height: 80%;
overflow: auto; }
#table-of-contents h2 {
font-size: 10pt;
max-width: 9em;
font-weight: normal;
padding-left: 0.5em;
padding-left: 0.5em;
padding-top: 0.05em;
padding-bottom: 0.05em; }
#table-of-contents #text-table-of-contents {
display: none;
text-align: left; }
#table-of-contents:hover #text-table-of-contents {
display: block;
padding: 0.5em;
margin-top: -1.5em; }
reply other threads:[~2012-06-05 19:50 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='003501cd4354$6b48cf20$41da6d60$@us' \
--to=mlt@gmx.us \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).