Two column Jekyll layout, separated by tags?

一笑奈何 提交于 2019-12-10 11:23:51

问题


I'm currently working on a Jekyll blog at the moment, and I'd like to put my markdown files in this format:

<div class="row">
    <div class="col-md-6">

    </div>
    <div class="col-md-6">

    </div>
</div>

I want my code blocks in one column and everything else (text, headers, etc.) in the other column so that I have side-by-side explanations of my code.

Is there any way to do this? It seems Markdown and the Liquid templating engine is very restrictive in this regard.

Thanks!


回答1:


You can get desired result by combining Twitter Bootstrap with templating engine:

<div class="row">
    <div class="col-md-6">
        {{ include-code-blocks }}
    </div>
    <div class="col-md-6">
        {{ include-texts }}
        {{ include-headers }}
        {{ include-what-you-want }}
    </div>
</div>

or you write them inline by enabling markdown processing inside html blocks:

# Apply this change to _config.yml file
kramdown:
  # parse markdown inside block-level HTML tag
  parse_block_html: true

And use this in markdown files:

<div class="row">
    <div class="col-md-6">
        **some code block here**
        **another code block here**
    </div>
    <div class="col-md-6">
        **some text here**
        ##some header here
        ###something else here
    </div>
</div>

Info about markdown syntax: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet Info about Jekyll's markdown processor: http://kramdown.gettalong.org/documentation.html




回答2:


If I understand, you want to take side by side, liquid/jekyll code and resulting code. You are using twitter bootstrap as css framework.

In order to instruct kramdown to parse markdown in html block tags, in _config.yml, add :

kramdown:
  # use Github Flavored Markdown
  input: GFM
  # do not replace newlines by <br>s
  hard_wrap: false
  # parse markdown inside block-level HTML tag
  parse_block_html: true

In marwdown files, you can now use the {% raw %}{% endraw %} tag to instruct liquid not to parse, but to print code 'as is'.

<div class="row">
<div class="col-md-6">
``` liquid
{% raw %}
{% if page.title == 'About' %}
page.title = {{ page.title }}
{% endif %}
{% endraw %}
```
</div>
<div class="col-md-6">
{% if page.title == 'About' %}
page.title = {{ page.title }}
{% endif %}
</div>
</div>

Note: There is no indentation. it's because a four space indentation is considered as a code block by kramdown. It wraps you code in code tag. Not cool.




回答3:


The answer is YES. This is very simple. Add float:left to paragraphs and code blocks. Use clear:left on p's. Make sure there is enough space for two elements next to each other. Add overflow:auto to the container. Like this: http://codepen.io/anon/pen/grqRPr.

Your Markdown file (index.md):

---
layout: default
---

paragraph goes here

```` code goes here ````

paragraph goes here

```` code goes here ````

Your CSS file (style.css):

p, pre {float: left; width: 50%;}
.container {width: 100%;}
p {clear: left;}

Your layout file (default.html):

<html>
<head>
   <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <div class="container">{{ content }}</div>
</body>
</html>


来源:https://stackoverflow.com/questions/37079595/two-column-jekyll-layout-separated-by-tags

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!