【问题标题】:Using MarkDown in Moodle quiz questions with the GIFT format在 GIFT 格式的 Moodle 测验问题中使用 MarkDown
【发布时间】:2021-12-17 02:55:12
【问题描述】:

有没有办法在测验问题中使用 MarkDown 的固定宽度代码块?

我在"GIFT" format 的文本编辑器中编写我的测验问题,然后将它们导入我的测验池。 GIFT 格式非常快速和紧凑,这种方法可以让我在没有互联网访问的情况下开发问题。

但是,我在测验问题中使用 MarkDown 文本格式时遇到了困难。 The docs say it's supported.

问题在于 GIFT 格式不允许问题中间出现换行符,但 MarkDown 依赖换行符来描述代码块。例如,我想要以下测验问题:

::Finding bugs::
[markdown] Consider the following code:

    x=5;
    if x=5
        disp("It worked!")
    else
        print('Uh oh!')
    done

On which lines do bugs occur? Answer in the form [1,2,3]. 
{
=[2,3,5,6]
}

这不能正确导入,因为 GIFT 格式禁止在测验问题中使用换行符。但我无法删除换行符,因为这样 MarkDown 将无法识别代码块。

想法? 谢谢!

【问题讨论】:

  • 在 GIFT 中,空行是问题的分隔符,而在 Markdown 中则有其他含义。所以,你必须逃避那些空行......

标签: markdown moodle


【解决方案1】:

(回答我自己的问题)这似乎有效:

::Finding bugs::
[markdown]
Consider the following code\:\n
\n    x\=5;
\n    if x\=5
\n        disp("It worked!")
\n    else
\n        print('Uh oh!')
\n    done
\n\n\n
On which lines do bugs occur? Answer in the form [1,2,3].
{
        =[2,3,5,6]
}

注意每个 \n 和代码之间的四个空格。呃。

【讨论】:

    【解决方案2】:

    我的 Moodle 网站 (v.311) 显示来自 ConvexMartian 的答案,每行之间有额外的换行符:

    为了摆脱那些虚假的换行符(Moodle 现在似乎同时解释了\n 和换行符),您可以将代码全部放在一行上(这非常难看!),例如:

    ::Finding bugs::
    [markdown]
    Consider the following code\:\n\n    x\=5;\n    if x\=5\n        disp("It worked!")\n    else\n        print('Uh oh!')\n    done\n\n\n
    On which lines do bugs occur? Answer in the form [1,2,3].
    {
            =[2,3,5,6]
    }
    

    结果:

    带有代码块的不间断空格选项

    answer on a Moodle forum 提到您可以在 markdown 中使用不间断空格(而不是缩进)和代码块(围栏)。您的问题如下所示:

    ::Finding bugs::
    [markdown] Consider the following code:
    ```
    x=5;
    if x=5
    .   disp("It worked!")
    else
    .   print('Uh oh!')
    done
    ```
    On which lines do bugs occur? Answer in the form [1,2,3]. 
    {
        =[2,3,5,6]
    }
    

    但是,上面行(缩进的行)上显示的. 必须是不间断空格(否则将不考虑缩进)。

    在答案中输入代码

    也可以将代码块放入答案中(同样,使用不间断空格来保留缩进)。

    在此示例中,必须对源代码中出现的 GIFT 控制字符 ({ } = : ~) 进行转义。 正因为如此,源代码看起来也很丑陋(但它有效):

    ::Code blocks in stem and answers ::
    [markdown]
    Complete the following TypeScript class so it has a method named `go` that accepts a string argument and always returns true.
    ```
    export class A \{
    .   // complete
    \}
    ```
    {
    =
    ```
    go(a\: string) \{
    .   return true;
    \}
    ```
    ~
    ```
    go(string a) \{
    .   return true;
    \}
    ```
    }
    
    

    结果:

    有一些支持 GIFT 的智能编辑器可以帮助您转义代码中的特殊字符。我更喜欢this VSCode extension for GIFT免责声明:它使用我帮助开发的 GIFT 语法/解析器。

    【讨论】:

    • 如何解决inline parkdown(例如bla bla foo bla bla)与foo在单独的一行而不是inline显示的问题?
    • @Antonello 我不确定我是否理解您的评论,但换行符在 GIFT 中是可以的,只要没有连续两个(空白行),这是问题的分隔符。
    • 如果在 GIFT 格式的测验中,您对问题(或答案)使用降价格式,然后使用反引号包围一些文本,您会看到 Moodle 将通过给出您已经将文本包围在单独的行中,而不是像所有 Markdown 实现那样将其与文本的其余部分保持在同一行中。..
    • 三个反引号是一个代码围栏。它与没有换行符的内联 code 不同。这是你的问题@antonello
    • @Antonello 在该博客页面上的示例中,有一种情况是 go 在单个反引号内,并且没有换行符。也许问题出在你的 Moodle 版本上?它甚至可以在样式表中。
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    相关资源
    最近更新 更多