首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Jekyll中的静态文件添加布局

向Jekyll中的静态文件添加布局
EN

Stack Overflow用户
提问于 2019-12-05 03:25:48
回答 1查看 144关注 0票数 0

我正在使用GitHub页面发布项目中的文件。这些文件是Java源代码文件,我可以将它们作为静态文件作为集合添加到Jekyll中。我需要将布局应用于这些文件,例如,代码格式化。我无法做到这一点。

我的静态源代码文件位于_config.yml中定义的集合中

代码语言:javascript
复制
collections_dir: material
collections:
  cse-solutions:
    output: true

我的站点的这一部分运行得很好:material/_cse-solutions下的.java-files出现在静态站点上的/cse-solutions中。

但是,我需要包括一个标题和代码格式。为此,我尝试将布局应用于这些静态文件。我目前的努力有以下几点。首先,在_config.yml中我设置了

代码语言:javascript
复制
defaults:
  - scope:
      path: ""
      type: "cse-solutions"
    values:
      layout: java-code

然后,为了简单起见,我有一个包含内容的文件_layouts/java-code.html

代码语言:javascript
复制
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Test title </title>
  </head>
  <body>
    <h1> Test code page heading </h1>
    {{ content }}
  </body>
</html>

但是,此布局对站点上的.java文件没有影响。老实说,如果布局是有效的,我甚至不知道输出是否会有.java-suffix。不过,我在这个网站上也找不到任何对应的.html-pages。

这可以做到吗?如果可以,我做错了什么?

编辑:我怀疑Jekyll只是忽略了静态文件的布局。使用来自Liquid的jsonify,我实际上可以打印这个集合的值,在那里我可以看到系统已经为这些静态文件正确设置了:

代码语言:javascript
复制
”layout”:”java_code”

但是对这些文件的格式化绝对没有影响。

(下划线,即用java_code代替java-code在这里不是一个错误,因为我注意到Jekyll的某些部分不喜欢标识符中的破折号,所以我把所有地方的破折号都改成了下划线。我认为Ruby不允许在标识符中使用破折号。)

EN

回答 1

Stack Overflow用户

发布于 2019-12-05 12:25:50

我想你可能把事情搞得有点复杂了。如果我没理解错的话,你只是想在你的页面上显示实际的源代码,对吗?例如,您希望代码看起来像这样:

代码语言:javascript
复制
class HelloWorld 
{ 
    public static void main(String args[]) 
    { 
        System.out.println("Hello, World"); 
    } 
} 

如果是这种情况,您可以简单地将编写的源代码保存为markdown文件(.md),并让kramdown标记转换器正确地处理它的显示。为此,您需要确保在_config.yml文件中包含以下内容:

代码语言:javascript
复制
kramdown:
  # Use GitHub flavored markdown, including triple backtick fenced code blocks
  input: GFM
  # Jekyll 3 and GitHub Pages now only support rouge for syntax highlighting
  syntax_highlighter: rouge

这将确保kramdown被启用,并将使用rouge进行语法突出显示。

然后,对于您想要的每个页面,只需创建一个pagename.md文件,并在页面顶部至少添加以下front matter

代码语言:javascript
复制
---
layout: java-code
title:  "Here is my source code page"
---

这将告诉jekyll使用您已经创建的"java-code“布局,并将页面的标题定义为您在引号中放置的任何内容。在前面的事情之后,只需将源代码复制到代码块中以进行标记即可。它非常简单,你所需要做的就是在你编码之前和之后用```写一行代码。您可以选择将第一行设置为```java,以告知rouge突出显示java语法,以使其更易于阅读。

您也可以将任何标记文本放在代码块之外。这意味着您可以对代码进行描述,甚至可以将代码分成多个部分,每个部分之前都有文本描述。

要把所有这些放在一起,你的文件应该看起来像这样:

代码语言:javascript
复制
---
layout: java-code
title:  "Here is my source code page"
---

Here is my simple "Hello, world" program:

```java

HelloWorld类

{

代码语言:javascript
复制
public static void main(String args[]) 
代码语言:javascript
复制
{ 
代码语言:javascript
复制
    System.out.println("Hello, World"); 
代码语言:javascript
复制
} 

}

代码语言:javascript
复制

查看jekyll网站上的docs page for posts获取更多信息,如果你不熟悉markdown,如果你在谷歌上进行快速搜索,有大量的指南可以用它来编写(这就是stackoverflow答案的格式!)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59183365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档