如何在Confluence中格式化行内代码?

646
我该如何在 Confluence 中格式化内联代码,就像这样?我的意思是,不是一个单独的代码块,而只是内联的 class 名称,例如。

3
投票支持使用快捷方式来实现此功能:https://jira.atlassian.com/browse/CONF-23966。 - Jens
Atlassian 称之为等宽字体 (https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all)。 - Dirk Schumacher
16个回答

775

要在Confluence中插入行内等宽字体,请将文本用双花括号括起来。

这是一个{{示例}}

如果您使用的是Confluence 4.x或更高版本,则还可以从段落样式菜单中选择“预格式化”选项。请注意,这将应用于整个行。

完整参考在此


146
在 Confluence 4+ 中,默认情况下已经没有 Wiki 标记,而“预格式化”选项适用于整行。唯一的方法(不安装 Wiki 文本编辑插件的情况下)是选择等宽字体。 - Dave
20
如果你只是粘贴内容,它是无法生效的 - 你需要打出闭合括号才能 "触发" "自动格式化"。如果你想用这种方式来格式化大段的文本,可以使用 插入 -> Wiki 标记 对话框,将内容全部输入或粘贴到其中。 - jaysee00
4
我发现使用Ctrl-Shift-D插入维基标记非常有用。这是我在V5中唯一使用的组合快捷键。是的,新编辑器可能很难使用。通过维基编辑器输入代码会更方便,特别是如果你习惯于标记语言编码而不是图形用户界面。 - Underverse
34
使这个方法可靠起来的方式是输入{{foo}};它总是会将'foo'识别为需要预格式化的内容,然后在 'f' 和 'o' 之间粘贴您真正想要放入其中的任何内容,最后删除 'foo' 文本即可。这样您就得到了您真正想要的预格式化的内容。 - Dan Mitchell
8
换一种不同的背景色或文本颜色怎么样?等宽字体并不是唯一的选择,我想在行内突出显示它,你有什么想法吗? - Ricky Levi
显示剩余10条评论

88

默认情况下,Confluence会以透明背景呈现等宽字体文本。您可以编辑全局CSS以添加灰色背景。来自Confluence手册

  1. 选择屏幕右上角的齿轮图标,然后选择Confluence管理。
  2. 选择样式表。
  3. 选择编辑。
  4. 将自定义的CSS粘贴到文本字段中。
  5. 选择保存。

用于在等宽块中显示灰色背景的自定义CSS:

code {
    padding: 1px 5px 1px 5px; 
    font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
    background-color: #eeeeee;
}

如果您正在使用Confluence OnDemand(云端):

  1. 在左侧边栏底部单击齿轮/齿条
  2. 选择外观
  3. 单击侧边栏,页眉和页脚选项卡
  4. 将自定义CSS粘贴到页眉字段中
  5. {style}代码块包装代码
  6. 保存

请粘贴以下内容:

{style}
code {
    padding: 1px 5px 1px 5px; 
    font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
    background-color: #eeeeee;
}
{style}

只需编写{{sometext}},您就可以获得漂亮整洁的类似stackoverflow样式的行内代码跨度。


1
如果您的空间使用自定义样式表/主题,则此方法可能无法正常工作。一种简单的解决方法是将上述示例附加在“外观->自定义HTML”下的样式标签中(在版本5.9.6上进行了测试)。 - jdknight
3
如果使用Confluence OnDemand,您需要转到“侧边栏、页眉和页脚”页面。然后在页眉文本框中复制/粘贴上述CSS代码,但是您需要在CSS之前和之后放置{style}。【{style}使用示例】(https://answers.atlassian.com/questions/99055/editing-csss-in-confluence-ondemand)。 - Phil
1
小修正,您似乎需要在样式块内转义花括号,否则 Confluence 将尝试查找名为 padding 的宏。 {style} code { ... } {style} - edqwerty
4
这段代码是有效的,但在我的OnDemand实例(云端)中,页面顶部出现一个错误提示:"The following macros are not currently supported in the header: style",尽管如此,页面仍然能够正常显示。奇怪 :) - GONeale
2
@GraehamF @GONeale 我刚刚在自定义CSS中添加了[class^=SpaceCustomSettingsBlockComponent_unsupportedMacros]{display: none;} :p - Samizdis
显示剩余2条评论

78

Confluence 4及以后版本

从Confluence 4及以上版本开始,输入两个花括号不再起作用。

现在您需要选择等宽字体。选中要更改的文本并执行以下操作:

Windows:Ctrl + Shift + M

Mac:Command + Shift + M

或者,您可以键入反引号 (`),Confluence会将其格式化,直到您键入另一个反引号。

或者,在加粗和斜体选项旁边,您可以单击“更多”下拉菜单,然后选择Monospace:

输入图像描述


10
请点赞,那是2020年后的正确答案。 - Sliq
对我来说,将从Windows NotePad窗口复制的代码片段复制到Confluence中时,它会在每行实际内容之间添加额外的行。使用“预格式化”段落或等宽字体时会发生这种情况。我认为这是Unix/Linux换行符与Windows CR/LF问题之一。我可以进入标记并使用<pre> </pre>标记,但然后我必须手动更改<和>为<和>(即HTML特殊字符编码)。所以这是可行的,但是很痛苦。有没有办法防止多余的行? - Ben Slade

29

您可以向友好的Confluence管理员请求为您创建一个宏。这里是一个适用于Confluence 3.x的宏示例。

Macro Name:    inlinecode
Macro Title:   Markup text like stackoverflow inline code
Categories:    Formatting
Macro Body Processing: Convert wiki markup to HTML
Output Format: HTML
Template:

## Macro title: Inline Code
## Macro has a body: Y
## Body processing: Convert wiki markup to HTML
## Output: HTML
##
## Developed by: My Name
## Date created: dd/mm/yyyy
## Installed by: My Name
## This makes the body text look like inline code markup from stackoverflow
## @noparams
<span style="padding: 1px 5px 1px 5px; font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; background-color: #eeeeee;">$body</span>

然后用户可以像这样使用{inlinecode}like this{inlinecode}

如果已安装,您还可以使用{html}{style}宏,或将此样式添加到您所在空间的样式表中。

顺便提一下,您可以要求Confluence管理员为您创建一个kbd宏。与上面相同,只是宏名称kbd模板为:

<span style="padding: 0.1em 0.6em;border: 1px solid #ccc; font-size: 11px; font-family: Arial,Helvetica,sans-serif; background-color: #f7f7f7; color: #333;  -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2),0 0 0 2px #ffffff inset; -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2),0 0 0 2px #ffffff inset; box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2),0 0 0 2px #ffffff inset; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; display: inline-block; margin: 0 0.1em; text-shadow: 0 1px 0 #fff; line-height: 1.4; white-space: nowrap; ">$body</span> 

接下来,您可以编写文档告诉用户按下 F1Enter 键。


2
不用太在意管理员 ;-),{kbd} 就是我要找的。谢谢! - Jasper de Vries

20

将行内文本{{ }}括起来。

注意事项:

  1. }}按空格键
  2. 无法复制行内预格式化文本并保持其外观。如果您这样做,可能无法添加{{ }}进行修复。请重新输入或不带格式粘贴(在Mac上为Cmd ⌘+Shift+V),然后添加{{ }}并按下空格键。
  3. 如果稍后要向现有文本添加{{ }},则不能将其包围在其他字符中,例如,如果您想在预格式化文本周围加上括号,则无法通过添加大括号({{my text}})来修复(my text)。首先在文本周围添加空格( my text ),然后添加{{ }}

尝试使用Ctrl-D,然后使用此标记?它应该尝试将其转换为新的标记。 - Underverse

12

在Confluence 5.4.2中,您可以在源代码编辑器中使用<code></code>标签来包围内联代码,如下所示:

Confluence will show <code>this inline code</code> in a fixed font. 

如果有许多片段需要修改,这个功能会非常有用,因为双花括号功能只在Confluence编辑器中交互式添加文本时起作用。


谢谢,这在使用UWC从MediaWiki迁移到Confluence的过程中似乎也可以工作。 - MonkeyMonkey

11

如果您想插入包含可选行号等的大型代码块,请使用代码宏(在宏->其他下可用)。


1
非常好,感谢!https://confluence.atlassian.com/display/DOC/Code+Block+Macro - Garret Wilson
怎么才能不用点开两个菜单就完成这个操作呢?我经常需要一页上有10个代码块。 - Jeremy Leipzig
12
输入“{”打开宏浏览器,开始输入“code”以输入代码。 - alex
请注意,如果您在代码中使用“&”符号,则会导致格式不正确 - 请参见https://jira.atlassian.com/browse/CONFCLOUD-59800。 - nevets1219

10
在文本中以行内格式显示代码,请使用“`”字符将您的代码括起来。该字符通常位于键盘上“1”键左侧。
示例:
`printf("Hello World");`

与 Stack Exchange 相同的分隔符!


2
ADM - 我展示的代码是带有分隔符的,而你却将它们取消转义了。现在代码看起来像是真正的代码,这并不是我的回答意图。我的回答意图是要证明在 Confluence 中分隔符字符是 `,恰好与 SO 相同。 - morrisonbrett
4
这能在哪个版本的Confluence上使用?我的实例没有将反引号作为特殊字符处理。 - Coderer
1
对我也不起作用,实际上这是我尝试的第一件事。 - Ric Hard
这在Confluence 7.x版本中有效。 - UtahJarhead

7

在撰写本文时,我发现 {{string}}{{ string }} 都不起作用。我的控制面板只有代码块按钮。

然而,固定宽度格式的快捷键被列出:Ctrl+Shift+M

我在菜单中查找了一下,但没有找到服务版本是什么。


当其他方法都无法使用时,这个键盘快捷键对我很有用,谢谢! - LockieR
一样的,有趣的是人们在回答问题之前甚至都不测试。感谢你的帮助 @user151841 - Marcell

6
我发现在Confluence (5.6.3)中使用颜色格式有些棘手,因为{{等宽字体}}块周围的空格非常严格。

使用Wiki标记创建带颜色的等宽字体

由Confluence渲染


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接