OpenIndy bio photo


Open source software solution for industrial measurement (metrology, laser tracker, quality control)

Twitter Facebook Github

================== Documentation - Building the Website _____________

Github and VM VirtualBox _____________

  • Create repository for site Head over to GitHub and create a new repository named, where username is your username (or organization name) on GitHub. Change Directory to the folder where you want to store your project, and clone the new repository: $ git clone

  • manual git commit: cd to folder

git add –all git commit -m “Initial commit” git push

  • git commit via QGIT:

Download QGit from Ubuntu Software Center The first start: Menu->Actions->Setup Actions->new name: push insert command to run: git push Username has to be your Username on Github and Password is its password

File->open -> go to directory of the repo Edit->commit -> insert commit message and select files to commit Actions-> push -> push the commit

  • Create Shared Folder for VirtualBox:

VM Box Eigenschaften: Geräte->Gemeinsame Ordner -> neuen gemeinsamen Ordner “sharedFolderDesktop” anlegen In Ubuntu in Home/SoftwareDev neuen Ordner SharedFolder anlegen Terminal: $ sudo mount -t vboxsf sharedFolderDesktop ~/SoftwareDev/SharedFolder/ ( sudo mount -t vboxsf sharedFolder ~/SoftwareDev/SharedFolder/ )

Jekyll _____________

  • Create new Jekyll site:

change directory to folder $ gem install jekyll $ jekyll new $ cd

  • Install theme with existing Jekyll site:

Download Minimal Mistakes and unzip. Copy data to existing folder open terminal, change directory to Run $ sudo apt-get install bundler
$ bundle install to install all dependencies (Jekyll, Jekyll-Sitemap, Octopress, Bourbon, etc) Run $ git init Remove demo posts and change existing pages (banner etc.)

Setup theme:

  • Scaffolding

How Minimal Mistakes is organized and what the various files are. All posts, layouts, includes, stylesheets, assets, and whatever else is grouped under the root folder. The compiled Jekyll site outputs to _site/.

minimal-mistakes/ ├── _includes/ | ├── _author-bio.html # bio stuff layout. pulls optional owner data from _config.yml | ├── _browser-upgrade.html # prompt to install a modern browser for < IE9 | ├── _disqus_comments.html # Disqus comments script | ├── _footer.html # site footer | ├── _head.html # site head | ├── _navigation.html # site top navigation | ├── _open-graph.html # Twitter Cards and Open Graph meta data | └── _scripts.html # site scripts ├── _layouts/ | ├── home.html # homepage layout | ├── page.html # page layout | ├── post-index.html # post index layout | └── post.html # single post layout ├── _posts/ # MarkDown formatted posts ├── _sass/ # Sass stylesheets ├── _templates/ # used by Octopress to define YAML variables for new posts/pages ├── about/ # sample about page ├── assets/ | ├── css/ # compiled stylesheets | ├── fonts/ # webfonts | ├── js/ | | ├── _main.js # main JavaScript file, plugin settings, etc | | ├── plugins/ # scripts and jQuery plugins to combine with _main.js | | ├── scripts.min.js # concatenated and minified _main.js + plugin scripts | | └── vendor/ # vendor scripts to leave alone and load as is | └── less/ ├── images/ # images for posts and pages ├── # 404 page ├── feed.xml # Atom feed template ├── # sample homepage. lists 5 latest posts ├── posts/ # sample post index page. lists all posts in reverse chronology └── theme-setup/ # theme setup page. safe to remove

  • Change confic.yml

“urls” is used to generate absolute urls in sitemap.xml, feed.xml, and for generating canonical URLs in <head>. change URL in config.yml to For testing purposes set it to url:

  • Run the site locally

cd to site DIR $ jekyll serve –watch Info: the attachment –watch replaces the command “$ jekyll build” which is necessary to process the Markdown syntax IMPORTANT: If you change something in _config.yml you have to process the file manually by running $ jekyll build

Now open in the browser (in config.yml you first have to put in this localhost adress into “url:)

  • Google Analytics and Webmaster Tools

Google Analytics UA and Webmaster Tool verification tags can be entered under owner in _config.yml. For more information on obtaining these meta tags check Google Webmaster Tools and Bing Webmaster Tools support.

  • Adding New Content with Octopress

Install Octopress ( gem if it isn’t already

$ gem install octopress –pre

  • Generate Sites manually: Create a file called “” in a folder “newPage” cd to folder, -> The Markdown will be processed automatically into HTML in folder _site (as index.html in folder newPage)

  • Generate Sites via octopress: To create a new page use the following command.

$ octopress new page name_of_page folder_of_page/

This will create a page at /folder_of_page/

  • Syntax of a site: Every site has to have a “front matter”. Front matter is a mini-configuration block that tells Jekyll about the page, including its title, layout, and other information. Front matter is placed inside of two sets of three dashes, like the following: — layout: default title: test tags: [test, theme, about] image: feature: banner_oi_proto.jpg — “image:feature” is important for the layout style to show a banner for example

  • Layout:

The _layouts folder contains the layout informations like header, menu, and footer.

  • Landing Page Change _layouts/home.html to change the existing Homepage

  • Navigation To set what links appear in the top navigation edit _data/navigation.yml. Use the following format to set the URL and title. External links will open in a new window.

  • title: Download url: /download/

  • title: Wiki url:

  • Change Copyright Text _includes/_footer.html

  • Changing CSS Style with Jekyll

Jekyll 2.x added support for Sass files making it much easier to modify a theme’s fonts and colors. By editing values found in _sass/variables.scss you can fine tune the site’s colors and typography.

For example if you wanted a red background instead of white you’d change $bodycolor: #fff; to $bodycolor: $cc0033;

  • Generate New Posts

Default command:

$ octopress new post “Post Title”

All of your posts will be saved in one directory “_posts”. If you want to group them into subfolders like /posts, /portfolio, etc. use this command:

$ octopress new post “New Post Title” –dir newDIR

By specifying the DIR it will create a new post in that folder (_posts/newDIR) and populate the categories: YAML with the same value. Change the “categories” syntax on the front matter (for example to “news”)

  • Preview of a post in the post-list

In the Post you have to put in the following line, where you want to end the preview:

This is important, so that the formatting of the preview contant is correctly represented!!

  • Feature Images The feature images live in the images/ folder. To add a feature image to a post or page just include the filename in the front matter like so.

image: feature: feature-image-filename.jpg thumb: thumbnail-image.jpg #keep it square 200x200 px is good

  • Post with large feature image

layout: post title: “Post with Large Feature Image and Text” excerpt: “Custom written post descriptions are the way to go… if you’re not lazy.” tags: [sample post, readability, test] comments: true image: feature: sample-image-4.jpg credit: WeGraphics creditlink: —

«This is the heading of a sample post with a large feature image

  • Post Index Page

To change the name of the /post site, wich contains all posts grouped by the year they were published a few references have to be customized. For example, to change Posts to Writing update the following:

In _config.yml under links: rename the title and URL to the following:


  • title: Writing url: /writing/

Rename posts/ to writing/ and update the YAML front matter accordingly. Update the View all posts link in the post.html layout found in _layouts to match title and URL set previously.

  • Preview of a post in the post-list

Source: Add the following Code, where you want to show a list of posts with a preview:

    <h2><a href="" title="OpenIndy version 0.8.0-16 online">OpenIndy version 0.8.0-16 online</a><br><br></h2>

    <div class="post-content-truncate">
            Changelog OpenIndy - Version build_0.8.0_16 Story play sounds for successful and unsuccessful measurements open functions dialog with double click or right click on features and transformation parameters task display target geometry of observations in functions dialog. Bug if you change a function you can now find the observation in the station list, including its target geometry observations are now displayed in functions dialog with their ID and the targetGeometry updating bundle input-geometries for view [Modul] Robocalc, fixed function "copy nominal to actual tool" "ReferencePoint" crashes, when the reference geometry is deleted [Modul] fixed an issue calculating ABB bases fixed weighted... <nobr>...</nobr>
    <p><a href="/news/improvement-of-usability/">Read more...</a><br><br><p>

    <h2><a href="" title="OpenIndy version 0.7.0-15 online">OpenIndy version 0.7.0-15 online</a><br><br></h2>

    <div class="post-content-truncate">
            Changelog OpenIndy - Version build_0.7.0_15 story implementation of leveled alignment modify column and row size for 4K displays create feature dialog now includes feature type as dialog name implemented change radius function for cylinder sort points of wighted alignment view by name transformation parameter now are "used" by default updated unit of change radius function task Featuredialog is no longer closing when an error occurs implement temperature compensation in all alignments and bestfits automatization of "Datum- transformation" bug fix all "ok" and "cancel" buttons in the dialogs fixed "used" Attribute is not show, if the observation is not solved (feature... <nobr>...</nobr>
    <p><a href="/news/leveled-bestfit/">Read more...</a><br><br><p>

    <h2><a href="" title="OpenIndy version 0.6.0-14 online">OpenIndy version 0.6.0-14 online</a><br><br></h2>

    <div class="post-content-truncate">
            Intro to bundle adjustment An open-source bundle adjustment is now implemented in the current version of OpenIndy. Here you can download OpenIndy version 0.6.0-14. The following blog will guide you through OpenIndy and how to use the bundle adjustment. To demonstrate a use-case where the bundle adjustment is useful, we will check if a tube is leveled. Preparation To check if the tube is leveled, we will measure a circle on both sides of the tube. To do so, we need to link our two lasertracker (LT) stations, one on each side. We solve this step by sticking 4 common... <nobr>...</nobr>
    <p><a href="/news/bundle-adjustment/">Read more...</a><br><br><p>

    <h2><a href="" title="layout with OpenIndy and Leica Lasertracker">layout with OpenIndy and Leica Lasertracker</a><br><br></h2>

    <div class="post-content-truncate">
            Here is an example to mark up a layout with OpenIndy and a Leica Lasertracker AT402. Purpose of this task is to define your coordinate system for the production line, import the nominal points and mark their positions on the ground for later build up. To define the coordinate system, you may get the level information of your lasertracker first and then define the coordinate axis (e.g. in pillars of the factory). Workflow: import nominal points of the layout create geometries that define the coordinate system (level plane, points/ planes to define other coordinate axis (x or y axis on... <nobr>...</nobr>
    <p><a href="/news/layout-with-openIndy/">Read more...</a><br><br><p>

    <h2><a href="" title="OpenIndy version 0.5.0-13 online">OpenIndy version 0.5.0-13 online</a><br><br></h2>

    <div class="post-content-truncate">
            Version 0.5.0-13 is now online on github. The new released version includes all laser tracker types of the common manufacturers and supports their functionality (for Leica Lasertrackers, only AT401 /AT402 are supported). Additional to the implemented laser trackers this version also provides an amount of functionality to measure basic geometries, make three- dimensional analysis with this gathered data, and construct more geometries out of the measured ones. Also you can check angles and distances between geometries and measure / use level information of the laser tracker to use for adjustments and evaluations. You have different possibilities to transform your tracker... <nobr>...</nobr>
    <p><a href="/news/version050-13/">Read more...</a><br><br><p>


!! In the Post itself you have to put in the following line, where you want to end the preview:


  • Author Override

By making use of data files you can assign different authors for each post. The owner variables are defined in config.yml. Start by modifying authors.yml file in the _data folder and add the authors using the following format:


billy_rick: name: Billy Rick web: email: bio: “What do you want, jewels? I am a very extravagant man.” avatar: bio-photo-2.jpg twitter: extravagantman google: plus: +BillyRick

To assign Billy Rick as an author for the post, add the following YAML front matter to a post:

author: billy_rick

  • ScrollToTop of site arrow

Style Config can be changed in _includes/_head.html

  • Tables in /_includes/_head.html there is a .CSSTableGenerator style with the parameters of a table In the .md fle you have to put in the raw html-code like this:
content1 content2

Important: There is no difference between <thead> and <tbody>, you only have to use <tr> and <td>

You can take the html code out of the _site folder after jekyll generates the markdown syntax, which is written like this:

Default aligned Left aligned Center aligned Right aligned
First body part Second cell Third cell fourth cell
Second line foo strong baz
Third line quux baz bar
Second body      
2 line      
Footer row      

( generate tables from excel: )

Kramdown Markup Language _____________

  • Syntax of kramdown


for new lines

  • Generating a Table of Contents:

Any post or page that you want a table of contents to render insert the following HTML in your post before the actual content. Kramdown will take care of the rest and convert all headlines into a contents list.


To ignore a caption:

#Caption Name

  • Sample Post with about everything you’ll need to style in the theme


  • Syntax Highlighting Code in Post

Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms.

Pygments Code Blocks:

To modify styling and highlight colors edit /_sass/_pygments.scss.

#container {
    float: left;
    margin: 0 -240px 0 0;
    width: 100%;
<nav class="pagination" role="navigation">
    {% if page.previous %}
        <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
    {% endif %}
    {% if %}
        <a href="{{ site.url }}{{ }}" class="btn" title="{{ }}">Next article</a>
    {% endif %}
</nav><!-- /.pagination -->

Standard Code Block:

<nav class="pagination" role="navigation">
    {% if page.previous %}
        <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
    {% endif %}
    {% if %}
        <a href="{{ site.url }}{{ }}" class="btn" title="{{ }}">Next article</a>
    {% endif %}
</nav><!-- /.pagination -->

Fenced Code Blocks

To modify styling and highlight colors edit /_sass/_coderay.scss. Line numbers and a few other things can be modified in _config.yml.

#container {
    float: left;
    margin: 0 -240px 0 0;
    width: 100%;
<nav class="pagination" role="navigation">
    {% if page.previous %}
        <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
    {% endif %}
    {% if %}
        <a href="{{ site.url }}{{ }}" class="btn" title="{{ }}">Next article</a>
    {% endif %}
</nav><!-- /.pagination -->
  • Footnote
  • Comments

  • Links

A link that opens in a new tab:

HS Mainz

  • Images in posts

Simple Image with a description:


Changed width (e.g. for icons) measurement config

Image with link to bigger image and capition middle

the watch window

Image and caption middle without Link to bigger image, capition middle:


the watch window

One image with a caption and description (as a link to another page)

This caption of the image is a link.

Two images: half class to display two images side by side that share the same caption:

Caption describing these two images.

Three images

Apply the third class to display three images side by side that share the same caption:

Caption describing these three images.
  • Videos

Video embeds are responsive and scale with the width of the main content block with the help of FitVids. Adding YouTube video embeds causes errors when building your Jekyll site. To fix add a space between the <iframe> tags and remove allowfullscreen. Example below: