我使用R bookdown
包创建一个gitbook。最近,我注意到呈现的gitbook中的代码块框下有一条难看的深色条纹(见下面的printscreen )。它出现时,highlight
设置为espresso
。像这样的条纹会分散注意力,当你试图读这本书时,看起来就没什么吸引力了。
我可以通过使用RStudio (很可能与最小订位示例相同的项目)创建一个新的预订项目来再现结果,并将文件_output.yml
的内容替换为两行:
bookdown::gitbook:
highlight: espresso
highlight: espresso
发布于 2018-02-03 01:44:56
问题来自于pandoc 2.x
的使用。
我复制了bug 这里,您可以在pandoc 1.19.x
这里中看到相同的gitbook
。
我写了一个便条来解释我的https://gitlab.com/RLesur/debug-bookdown#a-workflow-for-debugging-side-effects-of-pandoc-v2-on-rmarkdown。
在这两个版本中,HTML
源代码都非常接近(我自愿省略了div
和@谢一辉不喜欢的行ids )。
<div class="sourceCode">
<pre class="sourceCode r">
<code class="sourceCode r">
<span class="kw">install.packages</span>(<span class="st">"bookdown"</span>)
<span class="co"># or the development version</span>
<span class="co"># devtools::install_github("rstudio/bookdown")</span>
</code>
</pre>
</div>
您所遇到的问题是gitbook
espresso
highlighting.与主题之间的冲突的结果。
首先,暗条纹是espresso
的“真实”背景色(参见这里):pandoc
将background-color
of espresso
高亮设置为#2a211c
(它是硬编码的这里)。
内置的espresso
高亮显示看起来像pandoc v2.x
(它是黑色的,就像一杯浓缩咖啡):
code span.kw {
color: #43a8ed;
font-weight: bold;
}
code span.st {
color: #049b0a;
}
code span.co {
color: #0066ff;
font-weight: bold;
font-style: italic;
}
div.sourceCode {
color: #bdae9d;
background-color: #2a211c;
}
div.sourceCode {
overflow: auto;
}
div.sourceCode {
margin: 1em 0;
}
pre.sourceCode {
margin: 0;
}
<div class="sourceCode">
<pre class="sourceCode r">
<code class="sourceCode r">
<span class="kw">install.packages</span>(<span class="st">"bookdown"</span>)
<span class="co"># or the development version</span>
<span class="co"># devtools::install_github("rstudio/bookdown")</span>
</code>
</pre>
</div>
它与pandoc v1.19.x
background-color
略有不同,后者为 pre
元素设置background-color
,而不是 div.sourceCode
(这很重要)。
其次,gitbook
主题仅适用于 elements espresso
的暗背景颜色(Hex Gray97
),并定义了底部边缘(与pandoc
CSS相反) 请参阅此文件,第9行,第31963列。。
.book .book-body .page-wrapper .page-inner section.normal pre {
overflow: auto;
word-wrap: normal;
margin: 0 0 1.275em;
padding: .85em 1em;
background: #f7f7f7;
}
这个底部边距显示了包围div
元素的背景色:
pandoc 1.19.x
中,封闭的div
没有background-color
规则(背景色应用于pre
元素)。所以,没有黑色条纹。pandoc 2.x
中,背景色设置在div
级别。有一条黑色条纹。从您的问题中,我了解您希望espresso
高亮显示没有它的“丑陋的”黑暗伙伴。换句话说,你想要一个“白咖啡”的突出显示。
因此,有两个选项:
espresso
高亮显示的背景色这是品味的问题。
第一解决方案:去掉底部边距
将这些行保存在具有.css
扩展名的文件中(例如,fix.css
):
.book .book-body .page-wrapper .page-inner section.normal pre {
margin-bottom: 0!important;
}
将此CSS文件包括在您的预订中,修改_output.yml
bookdown::gitbook:
highlight: espresso
css: fix.css
第二个解决方案:用Hex Gray97
推翻espresso
背景色
在本例中,可以在fix.css
中包括以下行:
div.sourceCode {
background-color: #f7f7f7!important;
}
由于不建议使用important
规则,所以您可以以更优雅的方式获得相同的结果:使用important
的可以定制突出显示主题**。
这个要旨定义了一个whitecoffee
主题(它是具有Hex Gray97
背景的espresso
主题)。
将whitecoffee.theme
文件保存在项目的根级,并修改_output.yml
文件:
bookdown::gitbook:
highlight: whitecoffee.theme
https://stackoverflow.com/questions/48570690
复制相似问题