ChatGPT解决这个技术问题 Extra ChatGPT

How to apply color in Markdown?

I want to use Markdown to store textual information. But quick googling says Markdown does not support color. Also StackOverflow does not support color. Same as in case of GitHub markdown.

Is there any flavor of markdown that allows colored text?

what's you output format? Markdown is mostly used to be transformed to html, which supports color, and many parsers accept html code
Do you mean these parsers have inbuilt capability of putting html of markdown inside say ''? I heard not. Any link/example?
I mean you can mix them with pandoc for instance : <span style="color:red"> *some emphasized markdown text*</span>. If you are asking about native markdown handling of colors, I don't think it exists
This answer might be of some help as it was for me...
As noted in the answer at stackoverflow.com/a/61637203/441757, you can get some amount of color into markdown docs — without resorting to HTML and CSS — by using color emoji. Of course that doesn’t work for all cases, but for example, if you had wanted to color the word true in green and the word false in red, you can instead just do, e.g.: ✅ true and ❌ false. So you still get a color indication/hint, but without needing to color the entire string of text.

h
hyiltiz

TL;DR

Markdown doesn't support color but you can inline HTML inside Markdown, e.g.:

<span style="color:blue">some *blue* text</span>.

Longer answer

As the original/official syntax rules state (emphasis added):

Markdown’s syntax is intended for one purpose: to be used as a format for writing for the web. Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags. The idea is not to create a syntax that makes it easier to insert HTML tags. In my opinion, HTML tags are already easy to insert. The idea for Markdown is to make it easy to read, write, and edit prose. HTML is a publishing format; Markdown is a writing format. Thus, Markdown’s formatting syntax only addresses issues that can be conveyed in plain text. For any markup that is not covered by Markdown’s syntax, you simply use HTML itself.

As it is not a "publishing format," providing a way to color your text is out-of-scope for Markdown. That said, it is not impossible as you can include raw HTML (and HTML is a publishing format). For example, the following Markdown text (as suggested by @scoa in a comment):

Some Markdown text with <span style="color:blue">some *blue* text</span>.

Would result in the following HTML:

<p>Some Markdown text with <span style="color:blue">some <em>blue</em> text</span>.</p>

Now, StackOverflow (and probably GitHub) will strip the raw HTML out (as a security measure) so you lose the color here, but it should work on any standard Markdown implementation.

Another possibility is to use the non-standard Attribute Lists originally introduced by the Markuru implementation of Markdown and later adopted by a few others (there may be more, or slightly different implementations of the same idea, like div and span attributes in pandoc). In that case, you could assign a class to a paragraph or inline element, and then use CSS to define a color for a class. However, you absolutely must be using one of the few implementations which actually support the non-standard feature and your documents are no longer portable to other systems.


Thanks, now it remains to experiment how well we can mix HTML and markdown. But I really feel that any writing format should allow writer to convey on what words he wants to put emphasis. Though one can use bold and italics for that, but for explaining overly complex topics, emphasis by coloring may come handy. Or simply to convey two words form a pair among other pairs, by coloring words (say in same sentence but a bit away from each other) belonging to same pair with same color. Point is what may prove useful feature is determined by the nature and complexity of text to be written.
Sounds to me like your expectation of Markdown is different than what was intended by its creator. But that's just my opinion...
"Markdown’s syntax is intended for one purpose: to be used as a format for writing for the web.". And sometimes, we want to write in color. It's our right. WARNING : DANGER ! is better in red. And how can you explain that they implemented syntax coloring for languages ? Color are for us to use, when WE want.
@MarcLeBihan you are certainly free to have those opinions. However, they are not the opinions of the creator of Markdown and outside the scope of Markdown's design goals. If you want those features, then perhaps Markdown is not the right tool for you.
"Markdown’s formatting syntax only addresses issues that can be conveyed in plain text." - would that not mean that the bold, italic and underlining / headings markdown syntax violates that principle? I mean, if emphasis via bold, italic or headings is allowed, then why not emphasis using colour? It seems a line has been drawn somewhat arbitrarily between what is allowed and what isn't.
T
TeWu

When you want to use pure Markdown (without nested HTML), you can use Emojis to draw attention to some fragment of the file, i.e. ⚠️WARNING⚠️, 🔴IMPORTANT❗🔴 or 🔥NEW🔥.


Wow good answer thinking outside the box! This is a very simple and effective solution. Can copy/paste values from unicode.org/emoji/charts/full-emoji-list.html.
emojis tend to disrupt the monospace quality of the raw text, if that is of importance for the context
you can use github.com/jekyll/jemoji if you are using jekyll
Here's a cheat sheet with markdown emoji codes, eg :warning: for a warning triangle: github.com/ikatyang/emoji-cheat-sheet These work in a huge number of markdown dialects, including GitHub and Slack.
g
goto

I have started using Markdown to post some of my documents to an internal web site for in-house users. It is an easy way to have a document shared but not able to be edited by the viewer.

So, this marking of text in color is “Great”. I have use several like this and works wonderful.

<span style="color:blue">some *This is Blue italic.* text</span>

Turns into This is Blue italic.

And

<span style="color:red">some **This is Red Bold.** text</span>

Turns into This is Red Bold.

I love the flexibility and ease of use.


The above does nothing except the bold in This is Red Bold.
Not that the above was likely to work on a web page but... fun ▼✡︎✶✸∍∀≤☂︎☯︎℥😇🥑🇬🇧
It looks like you are mixing Markdown with HTML tags here. The span element may add the colour when viewed in your web browser, but it is not Markdown.
Most people trying to get color on the page are just focused on if the color will render to a markdown document; not if the code itself is markdown. So, I think this is a good answer.
You may love the flexibility and ease of use, but it didn't actually work.
S
Simon B.

While Markdown doesn't support color, if you don't need too many, you could always sacrifice some of the supported styles and redefine the related tag using CSS to make it color, and also remove the formatting, or not.

Example:

// resets
s { text-decoration:none; } //strike-through
em { font-style: normal; font-weight: bold; } //italic emphasis


// colors
s { color: green }
em { color: blue }

See also: How to restyle em tag to be bold instead of italic

Then in your markdown text

~~This is green~~
_this is blue_

Interesting but to get rid of the strike-though while colouring the text, the following should better work: s {text-decoration:none; color: green}
IMO, this answer is most in the spirit of markdown while answering the main question. It honors the plain text idea of markdown (that it's readable in plain text) and it honors the conversion requirements of when the text is parsed by a markdown viewer. In this sense I wish there was a bit of room (w.r.t. markdown viewers to redefine markdown tags to other HTML tags or to automatically assign classes to them). For example, I'd like * and _ to be different but they both point to <em>.
R
Robin Macharg

I like the idea of redefining existing tags if they're unused due to the fact that the text is cleaner, at the expense of existing tags. The inline styling works but creates a lot of noise when reading the raw text.

Using VSCode I've found that custom single-letter tags, supported by a small <style> section at the top, works well with a minimum of noise, especially for spot colour, e.g.

<style>
r { color: Red }
o { color: Orange }
g { color: Green }
</style>

# TODOs:

- <r>TODO:</r> Important thing to do
- <o>TODO:</o> Less important thing to do
- <g>DONE:</g> Breath deeply and improve karma

My use-case is orgmode-ish in-app note taking during development but I guess it might work elsewhere?


That is awesome, but I guess it is specific and may not work for all markdowns. Still, for GH, or mkdocs, etc, it is the best /o/
I love the concise approach. Sadly does not work in Azure Wiki. Seems to simply ignore the style section :(
Interesting. The Azure wiki docs do appear to allow HTML so not sure why this wouldn't work; perhaps there's some form of validation/filtering applied to wiki pages that strips out non-compliant tags? Further investigation required.
G
Galaxy

This should be shorter:

<font color='red'>test blue color font</font>

I don't like the idea of using a deprecated HTML tag, but if it works, it works...
Y
Y.Du

you can probably use the latex style:

$\color{color-code}{your-text-here}$

To keep the whitespace between words, you also need to include the tilde ~.


In the {your-text-here} area, you must use the tilde ~ instead of spaces to insert whitespace.
@Alex : Or do $\color{color-code}{{\rm your text here}}$ .
use \text to put whitespaces.
M
Michael Scheper

As an alternative, whatever purpose colour serves in your text may be achieved with coloured Unicode characters, such as 🔴, U+1F534 'large red circle'.

For example, I use characters like this when I document wire colours, when hardware accompanies my software projects on GitHub.

🔴 red: +5V
🟠 orange: +3.3V
⚫ black: ground
⚪ white: ground (pull-down)
🟣 purple: I2C signal
🟢 green: clock signal
🟡 yellow: WS2812 signal
🔵 blue: resistor bridge (analogue) input

Maybe this would be useful for your documentation, too. You can copy and paste this example into your text, or websearch for strings like 'unicode purple square'. They're also considered emoji.


Brilliant! Love the idea.
K
KargWare

In Jekyll I was able to add some color or other styles to a bold element (should work with all other elements as well).

I started the "styling" with {: and end it }. There is no space allowed between element and curly bracket!

**My Bold Text, in red color.**{: style="color: red; opacity: 0.80;" }

Will be translated to html:

<strong style="color: red; opacity: 0.80;">My Bold Text, in red color.</strong>

M
Mahesha999

Seems that kramdown supports colors in some form.

Kramdown allows inline html:

This is <span style="color: red">written in red</span>.

Also it has another syntax for including css classes inline:

This is *red*{: style="color: red"}.

This page further explains how GitLab utilizes more compact way to apply css classes in Kramdown:

Applying blue class to text: This is a paragraph that for some reason we want blue. {: .blue} Applying blue class to headings: #### A blue heading {: .blue} Applying two classes: A blue and bold paragraph. {: .blue .bold} Applying ids: #### A blue heading {: .blue #blue-h} This produces:

A blue heading

There is a lot of other stuff explained at above link. You may need to check.

Also, as other answer said, Kramdown is also the default markdown renderer behind Jekyll. So if you are authoring anything on github pages, above functionality might be available out of the box.


佚名

Short story: links. Make use of something like:

a[href='red'] { color: red; pointer-events: none; cursor: default; text-decoration: none; } Look, ma! Red!

(HTML above for demonstration purposes)

And in your md source:

[Look, ma! Red!](red)


Works in MDX. Fantastic idea!
Using this in Joplin, works great.
N
Nettlebay AP

This works in the note-taking Joplin:

<span style="color:red">text in red</span>

p
petezurich

Run the following in zeppelin paragraph

%md ### <span style="color:red">text</span>


J
JWP

I've had success with

<span class="someclass"></span>

Caveat : the class must already exist on the site.


L
Livruen Nati

Put in the RMarkdown header this command

header-includes: \usepackage{xcolor}

and then use this command to color your text

\textcolor{green}{Text is green!}

M
Maciek

Pain in the butt.

Markdown to PDF via pandoc worked for me only when using:

---
header-includes: 
                 \usepackage{xcolor}
                 \definecolor{alizarin}{rgb}{0.82, 0.1, 0.26}
---

\color{alizarin}The overarching aim \color{black} of this project is

"The overarching aim" in red - the rest in black. Font stays the same and no trouble with spaces.

Exporting to odt or docx - no luck.


S
Suraj Rao

Please use the below syntax to get the BOLD & Font Color as Red

__`A`__

Nor really red, but more orange...
S
Shawn Li

Thanks for all answers in this thread.

I with agree that, the end purpose is to emphasize and distinguish texts. So here is the integration of answers that I learnt from this thread, with personal preferences (check them out by pasting in MD editor):

style markdown 🔴 🟠 ⚫ ⚪ 🟣 🟢 🟡 🔵 same ✅ true and ❌false same underline underline ~~stroke~~ ~~stroke~~ italic *italic* ==highlight== ==highlight== bold **bold ** red color `red color` blue color blue color other color other color