QuickGuide: Adding LNCS Springer Style to LaTeX install

2011/05/31

A while ago I posted about installing the LNCS LaTeX classes. Those instructions are wrong, here is a better way of doing it.

  1. In $HOME create the following directory structure: ‘texmf/tex/latex’.
  2. Add the lncs folder as a subfolder of ‘latex’.
  3. Run the command texhash Other latex packages not found in the latex package manager can be installed the same way, baposter for example.

On Linux $HOME is ~, and on Mac OS X it is ~/Library.

Also for those that want a version of LNCS that works with href, one can be found here.


Note on Org-Mode for Emacs

2010/10/11

1 Overview

Org-Mode is an Emacs mode tailored for keeping notes, TODO lists and
general planning in an easy to use plain-text environmnet. I have
just started to use it and it certainly gets my vote as it fufills my
needs for work. These needs are:

  • I need to write up rough drafts quickly of notes from
    class/studying/research;
  • Have a planner to prioritise my time;
  • Incorporate existing workflows ;
  • Terminal based and/or can beintegrated with version control systems
    such as git or bazaar or svn; and
  • Be easy to use with an option to export to some better format for
    typesetting or viewing.

I use org-mode either to outline documents and fatten them out with
text and use TODO items to help organise that writing, or to manage my
life with todo items. For more information concerning org-mode see the references at the end of the post.

For this post I am simply going to introduce org-mode and its common
syntax and basic abilities. In a future post I shall go more into
depth how I use it for planning and GTD, moreover I might write a
tutorial on how I used it for outlining documents.

2 Setup

First some setup code. I have the following code placed in my .emacs
file:

(setq org-log-done t)
(setq org-export-with-toc 4)
(setq org-export-headline-levels 4)
(setq org-startup-folded "showall")
(setq org-startup-align-all-tables "align")
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(add-to-list 'auto-mode-alist '("\\.todo$" . org-mode))
(add-to-list 'auto-mode-alist '("\\.note$" . org-mode))

The first line adds time stamps to completed TODO items. The second
and third lines limits the table of contents, on export, to a depth of
four and limits heading depths to four within a file. The fourth
ensures that code folding is disabled. The final setting ensures that
tables are aligned. The last three lines forces emacs to open all
*.org, *.todo, and *.note files in org-mode. This is just a handy way
for me to organise my files as I see fit.

3 Exporting

Org-mode files can be exported to several formats such as docbook,
html and LaTeX. To export and get a list of available formats enter:
C-c C-e. Direct exportation is as follows:

HTML C-c C-e h
LaTeX C-c C-e l
DocBook C-c C-e D

4 Planner Mode

The core use of org-mode is as an outliner/planner. Headings are
rather trivial:

 
* Level 1
** Level 2
*** Level 3

and so on. Headings can also be indented and single stars used with
org-indent-view, but I do not like that.

4.1 Todo -Items Basics

When used as a planner each header acts as a TODO item and each of its
children and childrens children, are counted as sub-tasks. After the
header level indicator a state tag can be added that indicates the
status of the TODO item. The standard states are: TODO and
DONE. To rotate between states enter C-c C-t.

4.2 Adding States

Additional custom states can be added at the start of the file as
follows:

#+TODO: TODO FEEDBACK | DONE CANCELED
#+TYP_TODO: FEEDBACK | DONE CANCELED
#+SEQ_TODO: FEEDBACK | DONE CANCELED

Where all the states to the left of the vertical bar indicate
unfinished states and to the right finished states. Also appending
(char) to each state i.e. FEEDBACK(f) can add a fast action key
combo accessed by C-c C-t char

Global workflows can be added in your .emacs file as follows:

(setq org-todo-keywords
      '((sequence "TODO" "|" "DONE") ;; Classic
        (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
        (sequence "ALICE" "BOB" "|" "DONE")
))
Note
either of the above lines can be used.

4.3 Using States

The states of TODO items can be used in whatever way you
wish. There can even be support for different workflows The org-mode
manual provides two examples.

4.3.1 Types i.e. Task allocation

The states can be used to indicate who is to be allocated the
task. For example:

 
#+TYP_TODO: ALCE BOB CHARLIE MALLORY TIM | DONE

can be used to assign tasks to the people mentioned.

4.3.2 Bug Reports

Bug reports have different states which can be represented as:

 
#+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED

4.4 Progress

After task declaration use [ % ] or [n/m] to indicate completion.
The value will be updated with the children

* Organize Party [33%]
** TODO Call people [1/2]
*** TODO Peter
*** DONE Sarah
** TODO Buy food
** DONE Talk to neighbor

4.5 Checkboxes

Plain lists can be turned into todo items by adding [] at start i.e.

* TODO Organise Party [/]
  - [-] Call People
   - [ ] Alice
   - [X] Bob
  - [ ] order food

4.6 Tags

Labels and Tags are used for context. Form is :tag: Add tags with
C-c C-q or after colon M-<tab>

Type Command
File Tag #+FILETAGS: :tag:tag1:
Labels #+TAGS: @tag1 tag1
Tag Sets #+TAGS: { @work @home }

The tag sets are mutually exclusive. The @ character is not
important. Appending (char) to end of tag definition to add short
cut i.e.: @work(w).

4.7 Timestamps

Type Command Result
Active C-c . < 2006-11-01 Wed 19:15 >
Inactive C-c ! [ 2006-11-01 Wed 19:15 ]
Repeated nvt < 2006-11-01 Wed 19:15 +1w>
Range nvt <timestamp>--<timestamp>

4.7.1 Deadlines and Schedules

Deadlines and schedules can be appended to headlines as follows:

Deadlines C-c C-d
Scheduled C-c C-s
Note
scheduled implies when it starts.

5 Note Taking

Before, I used to write-up notes either directly in LaTeX or Markdown
(or varient of) as an intermediate form before conversion to LaTeX for
refinement. I have been also tempted to use reStructuredText or
Sphinx, and also play with pandoc as a converter between
formats. Although the aforementioned tools did give me a nice work
flow for note taking, the planner aspect did not work. For my todo
lists, I used to have simple markdown file full of lists combined with
a iCal calendar to mark it up in a calendar. Org-mode combines the two
just nicely.

5.1 Taking Notes

Taking notes in org-mode is simple. The mark-up syntax is similar
and easy to learn like most markdown-esque languages. I shall only
list some of the core markup features that I use commonly. Headers are
same as seen when outlining/planning.

When using org-mode to take notes, I use to write out the bulk of the
text from the notes with placeholders, in the form of descriptive
lists to represent any figures, lemmas, et cetera. I then export the
notes to LaTeX and fill out the rest of the more latexy stuff
i.e. maths et all, in pure LaTeX. I am aware that one can enter LaTeX
in org-mode but I have yet to explore it.

5.2 Syntax

5.2.1 Metadata

 
#+TITLE: A Note on Org-Mode for emacs
#+AUTHOR: Jan de Muijnck-Hughes
#+DATE: [2010-10-11 Mon]
#+EMAIL: foobar@nowhere.com
#+DESCRIPTION: Overview on how to use org-mode for working.
#+KEYWORDS: ORG-MODE NOTES TUTORIAL

The above is the metadata that I include for most notes.

5.2.2 Markup

Markup Command Result/Note
Unordered List - + * avoid use of *
Ordered List 1. 1) nvt
Description List term :: description nvt
bold *bold* bold
italic /italic/ italic
code =code= code
verbatim use tildas
Horizontal Rule ----- i.e.\ 5+ dashes nvt

5.2.3 Footnotes

Type Command
Regular Declaration [fn:<label>]
Regular Definition [fn:<label>] <text>
Inline [fn:<name>:<definition>]
Anonymous [fn::<definition>]

5.2.4 Hyperlinks

Type Command
Standard [[link][description ]
Raw Link [ [link ]]
Document Target <<Target>>

5.2.5 Tables

| Header  | Header 1 | Header 2 |
|---------+----------+----------|
| Content | Content  | Content  |

5.3 Blocks

There are several types of blocks that you can define, the manual has
more, but the ones that I use most often are: Quotes, Examples and
Source code.

5.3.1 Quotes

 
#+BEGIN_QUOTE
People sometimes ask me if it is a sin in the Church of Emacs to use vi. 
Using a free version of vi is not a sin; it is a penance. So happy hacking.
   --- Richard Stallman
#+END_QUOTE

5.3.2 Examples

 
#+BEGIN_EXAMPLE
#+BEGIN_QUOTE
...
#+END_QUOTE
#+END_EXAMPLE

Alternativly, the format : that is a space colon space also works
and it’s much quicker.

5.3.3 Source Code

 
#+BEGIN_SRC <emacs mode>
...
#+END_SRC

This is a cool feature of org-mode. You can add code in a block, label
it with its mode and it will be highlighted as appropriate in the
buffer. A list of languages can be found here. Furthermore, if you
execute the commad: =C-c ‘= this will launch a separate buffer to
enter the code in.

6 Further Reading furtherReading

A lot of org-mode functionality has been left out. More information
can be found online. Some quick lines:

Author: Jan de Muijnck-Hughes

Date: [2010-10-11 Mon]

HTML generated by org-mode 6.36c in emacs 23


Bash-Completion Mac OS X

2010/05/04

Just a quick note on how to turn on Bash-Completion on Mac OS X. Bash-Completion is a set of scripts that is essentially auto-complete on steroids. The benefits of this is that when you go to auto-complete on a make file or ant build file auto-complete will search the build file for the  build targets and list them instead of/ aswell as the files within the cwd. For a while now this has been included by default in most bash setups but not for Mac OS X. To install:

  1. Assuming you have Mac Ports installed:

    $ sudo port install bash-completion

  2. Add the following to your ~/.profile file.

    if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
    fi

  3. Open a new terminal and then enjoy!

Introducing Tome

2010/03/22

I have finally decided upon a name for the aforementioned documentation viewer for Linux that I previewed yesterday:

Tome

The rationale being that an existing Linux distro is  Tome of knowledge concerning system documentation, programming documentation etc I have yet to commit the code as I have a very busy schedule, a friend of mine is playing in a bar tonight, in less than an hour in fact, with a 20 minute bike ride and food still to do… However, I am still needing to do a lot but I will upload the code tomorrow night, hopefully i can get my head around  launchpad and “proper development procedures” by then. Of note it would be nice  to get some second opinions/help —first proper app you see— for:

  • Artwork — i can barely draw a circle in Inkscape😉
  • Internationalisation
  • Code tidying
  • Parsing the “theList.txt”
  • Removing redundant entries

If you want to help drop us a line. I have created a launchpad project and my details should be there and will update it tomorrow night after work!

Also thanks to those behind: Quickly and Acire, I wouldn’t have been able to do something so fast so quickly.

Oh and yeah, here is the obligatory screen shot:


DocView Preview

2010/03/21

In recent weeks Ubuntu (or rather Jono Bacon) has been championing the cause of the Opportunistic Developer. As part of that drive, and for a while before, the community has developed several tools to aide the Opportunistic Developer in their goals and aims.  For example:

However one thing that is missing is within this landscape of developer aides is easy to access Developer documentation. That is a single app that presents the opportunistic developer with locally sourced docs that can hopefully help them with their project. To this end I decided to hack together such an application. It is presently called DocView (this is a tentative name) but an offical and proper name will be decided upon once I push the code to launchpad. Currently DocView is a simple python app that uses webkit to view a preselected choice of documentation that exists within the /usr/share/ directories.

Some of you might say:

What about DevHelp!?

DevHelp has pretty much exactly the same goals as my project that is providing developers with access to documentation, however, DevHelp is primarily aimed for GTK and Gnome and works with gtk-doc.  As such it does not include everything that exists within /usr/share , for instance: Doxygen and Java manuals are not included, while Python is. Moreover DevHelp integrates with a few apps such as Anjuta… so there is a bit of overlap. However I wish to keep this project quite simple at the moment.

Currently DocView is less than 2 hours old and is currently looking like this:

There is still a lot of work that still needs to be done on DocView. I still need to iron out several bits and pieces like:

  • How I am going to locate this documentation, currently, it is hardcoded as a list. Something which I want to avoid
  • How to group the items within the tree menu i.e.\ language, doc type
  • How to store the list of docs, CouchDB looks like the way to go.
  • And any other features that may be plausible for such a project.

I am also undecided given the substantial overlap with DevHelp if I should continue with this project. But who knows…


    Some Indescribable music videos

    2010/02/27

    A collection of indescribable music videos that a friend pointed me towards. There are times when I am glad that my polygotism doesn’t cover the languages used!:

    And as a bonus here are two videos, that I do not know how to describe, but not in the same way as the above:


    Customising Komodo Edit’s Colour Scheme

    2010/02/15

    Komodo Edit is a nice little cross platform text editor for dynamic languages from Active state based upon the XUL framework from Mozilla. I like as it is, among other things, an awesome Python editor. It provides some basic project management features, and some auto-completion and call-tips. The latter of which does become handy ever so often.

    However its default colouring scheme could do with some improvements. Currently it looks like so:

    When I use emacs, I use Gnome 2 as the ‘theme’, for example:

    Emacs Theme Gnome2

    So the other day I took the plunge and created a Gnome2 ‘inspired’ theme for Komodo Edit. As always it is in perpetual development but at the moment it looks just fine. As you can see in image, below:


    I have tweaked some of the colours to improve visibility but on par it makes Komodo Edit look more purdy. One thing to note is that the list of Keywords for Python in Komodo Edit is not as extensive, as that with Emacs😦 . However after a quick search, I found a post that explained how to add keywords. For Python, just locate the koPythonLanguage.py file and add the following code in the constructor of the koPythonLexerLanguageService class:

    kwlist.update(['keyword1','keyword2',...])

    And fill in the keywords you want. You can find the colour scheme file and keyword code here.