通常,当我问一个问题时,我必须包括很多代码以供参考。



能够加粗代码中的重要行会很好。

例如以下代码:

 <DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
            <Binding ElementName="MainForm" Path="PickedWorkItemID"/>
            <Binding Path="Id"/>
        </MultiBinding>
    </DataTrigger.Binding>
    <Setter Property="IsEnabled" Value="False"/>
    <Setter Property="IsSelected" Value="False"/>
</DataTrigger>
 


不是时间很长,但是重要的部分(如本问题所示)是倒数第二行。但是,如果我尝试将其加粗,它最终将如下所示:

 <DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
            <Binding ElementName="MainForm" Path="PickedWorkItemID"/>
            <Binding Path="Id"/>
        </MultiBinding>
    </DataTrigger.Binding>
    <Setter Property="IsEnabled" Value="False"/>
    **<Setter Property="IsSelected" Value="False"/>**
</DataTrigger>
 


不是我想要的。能够在需要时引起人们对特定代码行的关注会很好。

(建议使用另一种颜色的背景听起来也不错(例如,用黄色背景吸引相关代码。)

如果还有其他加粗方式在代码中,请让我知道。

评论

我几乎可以肯定我已经看过这个建议。我还是喜欢。

我喜欢这个主意,但是我看到的唯一问题是人们在像这样编写C / C ++:int main(int argc,char ** argv)。现在,之后的所有内容都会变为粗体。

也许一些特殊的代码粗体语法?有什么奇怪的地方可以不与代码冲突?

有什么奇怪的地方可以不与至少一种语言发生冲突?

是的,Perl可能会与我所见的任何东西发生冲突。

如果要避免发生理论上的冲突的可能性,则需要一个转义机制。开始听起来很复杂,不像tvanfosson的建议...

+1,我喜欢这个建议。

开始赏金,希望这可以真正做到。

网站所有者对此有何评论的机会?很高兴知道它是否已被看到,考虑或拒绝(叹气)。

嗯,只是拒绝了。没有理由?太难?不重要吗?有任何评论吗?

我也希望看到此功能以作答,以强调为使发问者的原始代码有效而进行的更改。

等一下,我们什么时候投票的?我看到其标记为拒绝。在哪里/如何对新功能进行投票?

@Nick-没有投票。 SO的功能不是在民主或共和的意义上运行的。我们提交他们,他们决定他们是否好。 (尽管对此票数很高,但他们可能会重新审视它。)Jeff甚至没有理由就拒绝了这一票……(当时让我很生气。)

作为记录,如果您用
 而不是四个空格标记代码,则可以立即进行记录。不过,您将丧失HTML / XML字符的自动转义。

如果为了避免与其他语言的冲突而使代码粗体中的代码变得复杂,只需使粗体按钮上下文敏感,则可以放下任何需要的疯狂内容

#1 楼

我看到了一些选择:


只需在适当的语言语法中添加一条注释,即可引起人们对重要代码行的注意。
但是,自动选择可能会更好代码块的行编号,因此您只需说“在X行上看到...”即可。

如果您包含太多代码,以至于不清楚哪些是“重要”部分,那么通常您包含太多代码。尝试将其煮沸到最小的可行示例。

评论


*100。行号将使引用代码的不同部分变得更加容易,并且可以使答案更短,因为如果只需要更改几行,则它们不需要包含整个代码。

– Pollyanna
09年12月11日在19:58

行号不是一个好主意,因为它使复制和粘贴代码变得困难,以便可以在浏览器之外进行编译。如果需要突出显示一行,只需在代码中使用该语言的注释即可。例如:int x = 4/0; //错误在这里!

–nb69307
09年12月11日在21:33

@Neil-我同意。我经常将问题从一个文件切成一个文件进行测试-仅为了以可用形式获取代码而不得不编辑问题似乎是错误的。

– tvanfosson
09年12月11日在21:53

人们将提出的所有goto答案+1

– Antony
09年12月11日在21:55

通过正确使用HTML / CSS,应该可以将行号与代码分开...我现在已经过时了几年,但是这里单独的表格单元格或div不够吗?

–醚
09年12月11日在22:42

@Æther:甚至还有一些例子。 Google做到了:code.google.com/p/google-code-prettify/source/browse/trunk/src/…

–乔治·舍利(GeorgSchölly)
09年12月12日上午10:53

更改渲染时,现有的代码块可能突然看起来很有趣……并非所有预格式化的文本实际上都是这些站点上的代码。

– Arjan
09年12月13日在8:42

@ nb69307,天哪,这不是90年代。用适当的HTML复制和粘贴代码并不难。

–起搏器
2015年9月21日在8:35

#2 楼

您总是可以尝试手动创建HTML:



 <DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
            <Binding ElementName="MainForm" Path="PickedWorkItemID"/>
            <Binding Path="Id"/>
        </MultiBinding>
    </DataTrigger.Binding>
    <Setter Property="IsEnabled" Value="False"/>
    <Setter Property="IsSelected" Value="False"/>
</DataTrigger>
 


 <pre><code>&lt;DataTrigger Value="True"&gt;
    &lt;DataTrigger.Binding&gt;
        &lt;MultiBinding Converter="{StaticResource DisableWorkItemConverter}"&gt;
            &lt;Binding ElementName="MainForm" Path="PickedWorkItemID"/&gt;
            &lt;Binding Path="Id"/&gt;
        &lt;/MultiBinding&gt;
    &lt;/DataTrigger.Binding&gt;
    &lt;Setter Property="IsEnabled" Value="False"/&gt;
    <b>&lt;Setter Property="IsSelected" Value="False"/&gt;</b>
&lt;/DataTrigger&gt;
</code></pre>
 


我想指出的是,您必须将<替换为&lt;,并将>替换为&gt;

评论


有趣。我不知道
 会触发语法高亮显示,谢谢!


–嘎嘎吉x德
09年12月11日在19:55

是的,这是唯一真正的解决方案

–杰夫·阿特伍德
09年12月14日在19:39

我正在为此等待油腻的猴子解决方案。

–乔尔·科恩(Joel Coehoorn)
09年12月14日在22:09

@Jeff:您总是可以扩展markdown语法。

–乔治·舍利(GeorgSchölly)
09年12月15日在6:12

这种证明证明了加粗代码是徒劳的,因为粗体字几乎根本不突出(无论如何对我而言)。

–心怀不满的山羊
2010-4-20在16:09

@DisgruntledGoat,这取决于字体。

–起搏器
15年9月21日在8:40

只是想澄清一下,您不必替换HTML块中的方括号<和>即可使其正确显示。您只需替换第一个括号<即可完成工作。这是一个示例:jsfiddle.net/gb5ujy14/1

–里卡多·泽(Ricardo Zea)
16-3-7在14:13



#3 楼

尽管有时无法找到答案,但我有时会这样做。

this is bold code and this isn't

这就是我的做法:

<code>this is **bold code** and this isn't</code>


或者:

this is bold code and this isn't

这是来源:

<code>this is <b>bold code</b> and this isn't</code>


评论


这是最简单的!

– nawfal
15年11月24日在8:12

这也适用于我需要的github。

–eMBee
16 Dec 6'在10:28

这仅是单行

–起搏器
20年7月30日在8:25

@Pacerier:您可以将所有内容包装在

...

中并使其成为多行

–内森·费尔曼(Nathan Fellman)
20年8月1日在18:14

#4 楼

不漂亮,只是一种解决方法。

Ascii art是您的朋友。

<DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
            <Binding ElementName="MainForm" Path="PickedWorkItemID"/>
            <Binding Path="Id"/>
        </MultiBinding>
    </DataTrigger.Binding>
    <Setter Property="IsEnabled" Value="False"/>
    <Setter Property="IsSelected" Value="False"/>     <-----+
</DataTrigger>                                              |
                                                            |
                                                            |
             yo, this line here! ----------------------------


评论


通常,我要做的是截取代码的屏幕快照,并在问题区域周围绘制徒手画的圆圈。

–克雷登斯
09年12月11日在16:30

徒手圈子+1!我认为,ASCII艺术可能更快。

–嘎嘎吉x德
09年12月11日在16:32

嗯,除非也可以使用相同的代码作为文本,否则我不喜欢代码的屏幕快照,因为这样其他人可能需要在答案中键入代码。 (就像错误消息的屏幕截图一样。而且,它对SEO不太友好。)

– Arjan
09年12月13日在8:32

@Dexter,屏幕截图使其对Google不可见。不好。屏幕截图+文字明显违反了DRY。

–起搏器
2015年9月21日在8:40



#5 楼

通常,我会在要突出显示的行上标记评论。注释的突出显示语法与普通代码不同。也许可以将注释突出显示为粗体以使其更加引人注目,或者仅将粗体突出显示应用于已注释的部分?

  var foo = new Bar();  // here is the problem...


评论


或在问题行上方和下方使用空格+注释进一步区分它...

–嘎嘎吉x德
09年12月11日下午16:31

没错,这可以工作。但是大胆的吸引注意力要容易得多。尤其是当您的代码中已经包含其他注释时。

– Vaccano
09年12月11日在16:54

如果您将代码设置为空格...则很难遵循;)

–沃伦
09年12月11日在17:28

@warren,确实是:en.wikipedia.org/wiki/Whitespace_%28programming_language%29 ;-)

– Arjan
09年12月13日在8:36

我认为评论是可行的方法,但是根据[我的回答](#32931),使特定评论脱颖而出的方法又如何呢?

– benzado
09年12月14日在21:25

我认为,如果可能的话,仅在评论部分中启用标记就足够了。我不知道我们需要引入新的标记元素。

– tvanfosson
09年12月14日在21:55

我不清楚您是说所有注释都应突出显示(我不同意)还是在注释内部启用粗体转义码(我同意)

– benzado
09年12月15日在18:11

我将同时尝试这两种方法,但是只需更改注释的样式,以使这些注释不“变灰”就足够了。

– tvanfosson
09年12月15日在18:22

#6 楼

那听起来像一个好主意。这是我的实现方式:

未格式化的标记

Here's my example code:

    var fruit = "Apple"
 -> if isRipe(fruit) do
        eat(fruit)
    end



带有该箭头的行应自动用不同颜色的背景突出显示。也许可以为每个突出显示的行添加参考号。


这是我的示例代码:


 var fruit = "Apple"
 if isRipe(fruit) do                                                       [1]
     eat(fruit)
 end



评论


Pre不会应用代码突出显示,这不是很好。但是我们应该有额外的标记来突出显示带有黄色背景的线条的想法很棒。

– Pollyanna
09年12月11日在18:43

我不记得提到
 ...


–乔治·舍利(GeorgSchölly)
09年12月11日在19:56

嗯,您在
中包含了-不错。


– Pollyanna
09年12月11日在20:01

在开始考虑如何在问题中实际使用代码之前,我对此很满意。如果我想测试一些东西,我将从问题中剪切/粘贴。现在,除了换行符不一致外,它的工作原理与广告中所宣传的差不多。对于注释,只要注释使用代码的语言,它仍然有效。有了这个,我将不得不对其进行编辑以使其正常工作。对注释的改进或对注释进行突出显示的解决方案不足以使其功能值得一提。

– tvanfosson
09年12月11日在21:59

@tvanfosson:这是一个值得考虑的想法。您是否看到流行的框架如何在代码中添加行号?他们使用自己的容器,因此只能复制代码。当然,这对于线标记也是可能的。 (不利的一面是,这需要更多的水平空间。)

–乔治·舍利(GeorgSchölly)
09年12月11日在22:35

@Pollyanna:您似乎误解了我。我将尝试澄清我的帖子。

–乔治·舍利(GeorgSchölly)
09年12月11日在22:36

@tvanfosson:为什么不只复制呈现的代码版本?如果您从呈现的版本中进行复制,则粗体字不需要任何特殊的固定吗?

– Vaccano
09年12月12日下午5:00

我喜欢背景颜色不同(即黄色)的想法。这将使它比黑体更清晰。

– Vaccano
09年12月12日23:05

->的问题是C ++使用它来访问指针属性。

– Macha
09年12月14日在19:17

@Macha:但不是前4个字符,它告诉markdown这是一个代码部分。

–乔治·舍利(GeorgSchölly)
09年12月15日在6:11

#7 楼

一些IDE在注释中查找关键字,并将其视为书签。具体来说,如果您在评论中键入TODO: fix this bug,它将作为一项添加到“目录”弹出菜单中。

如果评论中的特殊关键字或语法触发了突出显示怎么办?例如:

<DataTrigger Value="True">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
            <Binding ElementName="MainForm" Path="PickedWorkItemID"/>
            <Binding Path="Id"/>
        </MultiBinding>
    </DataTrigger.Binding>
    <Setter Property="IsEnabled" Value="False"/>
    <Setter Property="IsSelected" Value="False"/> <!-- HELP: here is the problem -->
</DataTrigger>


HELP:看起来像是一个合理的关键字,不会产生太多的误报。该行的背景可能是彩色的,或者(这可能更易于实现)特定注释可以接受更大的格式(因为默认注释格式是浅灰色文本)。

#8 楼

在仔细研究了所有保护措施之后,我仍然认为代码中的粗体很方便,尤其是对于那些时间不多的人。是的,还有很多其他方法可以引起人们的注意,但是对于初学者来说,粗体似乎更容易。

评论


如果用户“没有太多时间”,那么他们将没有足够的时间来思考和写一个好的问题并查看答案

–mmmmmm
13年1月12日在12:11

@Mark:那肯定不是真的。

–Hoàng Long
13年1月12日在18:06

根据您的说法,如果我没有很多时间,我也不会吃饭/睡觉/工作...

–Hoàng Long
13年1月12日在18:07

#9 楼

另外,有时在代码块内部进行格式化很有用:例如,用嵌套列表表示某些“计算机生成的”层次结构(例如文件系统)。还是应该完全使用代码块?三重反引号用于格式被忽略的块代码。双引号与单引号重复使用(除了一些附加的转义功能)。我的建议是对允许使用格式的块代码使用双反引号。 (顺便说一句,它类似于严格的相等性检查===与在某些编程语言中松散的一个== :)

用法示例(请注意双反引号):

此... :

``
- c:
    - documents and settings
        - admin
        - all users
        - default user
        - *username*
            - application data
            - local settings
                - temp
    - program files
        - Microsoft Office
        - Windows Media Player
    - Windows
        - fonts
        - system32
``


...应生成此:

c:
documents and settings
admin
all users
default user

username
application data
local settingstemp





program files
Microsoft Office
Windows Media Player


Windows
fonts
system32





以及此...:

``
create [temp|temporary] table [if not exists] *table-name* (
    *column-name* [*type-name*]
)
``


...应生成此代码:

create [temp|temporary] table [if not exists] table-name (
    column-name [type-name]
)


,由于markdown不是标记,因此标记不应不会被渲染,但保持原样,如上所示:

``
<book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    **<price>44.95<price> <!-- error: wrong closing tag -->**
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications with XML.</description>
</book>
``


上面的代码生成了这个(未标记):

<book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95<price> <!-- error: wrong closing tag -->
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications with XML.</description>
</book>


如果需要标记格式的灵活性(例如彩色突出显示),则可以根据需要将代码包装在<pre><code>和样式中(直到markdown引入了类似的样式可能性)。

#10 楼

OP选择XAML来问这个问题,在处理基于XML的语言时,很难使用pre / code,但是作为参考,例如,如果您要处理C#或任何其他不涉及其他语言的语言,大于/大于符号,这应该很容易实现。

此:

public void Greet()
{
    Console.WriteLine("Hello world!");
}


将从以下输入中呈现:

<pre>
public void Greet()
{
    Console.WriteLine(<b>"Hello world!"</b>);
}
</pre>