I would like to write a document that explain coding standard with good and bad coding examples. Each rule has a number a description and an example.
For example here is the rule 1:
# Rule 1
Description for rule 1.
## Good
```c
int foo (void)
{
int i;
}
```
## Bad
```c
int foo (void) {
int i;
}
```
From each individal rules, I would like to generate a PDF or an HTML page with a global table of contents.
How can I write a Markdown compatible code that can represent horizontally aligned code blocks with syntaxic coloring?
Like this:
Or this:
Good Not Good
.---------------------+--------------------.
| int foo (void) | int foo (void) { |
| { | int i; |
| int i; | } |
| } | |
'---------------------+--------------------'
I am aware that I can add meta data such as HTML tags to a Markdown document. So I might be able to write something like this:
<good>
```c
int foo (void)
{
int i;
}
```
</good>
<bad>
```c
int foo (void) {
int i;
}
```
</bad>
And process the data afterwards (I still don't know how)
markdown -> own-tags-processing -> LaTeX -> pdf
markdown -> own-tags-processing -> HTML
Is there a better way to horizontally align two blocks of code horizontally?
This is an old question but in case people come here from Google, the above answer is correct for plain true Markdown, but if you're looking to do this with or through something that's implementing kramdown, kramdown does support mixed HTML and Markdown syntaxes by its usage of PHP Markdown Extra as noted in kramdown docs here. kramdown just requires that in your markdown page where you intend to use said HTML, you add an attribute to the wrapping HTML element of
markdown="1"
.As an example (and direct solution to two-column markdown), this results in two columns for content. I did this using Bootstrap to handle both column width and image centering, but you could take any approach for those topics.
Be wary of indents. I specifically didn't indent more than one level in the above code. I believe kramdown by default will interpret doubly-indented code as a quote block (and if I recall correctly, that's standard for Markdown in general).
Also note that I chose to use the html
img
tag instead of the markdown image link. You may choose to do the same since you gain a bit of extra control.And, if you're new or unfamiliar with/to Bootstrap, you can change the relative column widths by changing the
8
and/or4
shown in the code above, just make sure the sum of those two numbers is always 12.As mentioned above, this only works for markdown consumers implementing the kramdown engine (and that's great for Jekyll users).
You can't, at least not with pure Markdown as it doesn't have any concept of columns. As explained in the rules:
In fact, the best way would be to have each code block wrapped in a
<div>
with the appropriate class assigned to each div. However, most Markdown parsers do not parse Markdown inside a raw HTML block. Therefore, you may need to also define the code block in raw HTML as well. Check your parser's list of features to find out. In the event you are not able to define your own CSS to use separately from the Markdown (to style the HTML), you will also need to define the styles inline in the HTML. This question includes a nice sample of what that might look like. Just replace the comments with the appropriate code blocks. If you have to define your code blocks in raw HTML, they would look like this:So, the final document that is sure to work in all (most?) Markdown parsers would look like this:
Note that that uses one of many different ways of defining columns in CSS. Differant methods may or may not work in different browsers. YMMV.
While this doesn't work for all markdown's, I got this to work with GitLab, Github, and mdBook. I thought I'd share this answer.
Basically, you create the table via HTML. Markdown and HTML don't mix well, but if you surround the markdown with white-space, sometimes the markdown can be recognized.
https://docs.gitlab.com/ee/user/markdown.html#inline-html