in Haml を使用=
してスクリプトの結果を含める場合、Haml は挿入されたテキストを再インデントして、それが含まれる場所のインデントに一致させます。たとえば、次のような Haml があるとします。
%html
%body
.foo
= insert_something
次のような HTMLをinsert_something
返します。
<p>
This is possily generated from Markdown.
</p>
結果の HTML は次のようになります。
<html>
<body>
<div class='foo'>
<p>
This is possily generated from Markdown.
</p>
</div>
</body>
</html>
p
ドキュメント内の位置に合わせて要素がどのようにインデントされているかに注意してください。通常、これは問題ではありません。これは、HTML の空白が折りたたまれる方法のためです。ただし、特に空白が重要な HTML 要素がありますpre
。
ここで起こっているように見えるのは、Markdown が次のようなものを生成していることです。
<pre><code>line 1 is fine
line 2 is wrapping
</code></pre>
Hamlファイルに含まれている場合(Markdownを含めるためにHamlレイアウトを使用している= yield
と思います)、ページを表示するとインデントされ、空白が表示されます。最初の行が開始タグの直後にあることに注意してください。余分な空白はありません。
これを修正するには、いくつかの方法があります。:ugly
オプションを設定すると、Haml はこのようにブロックを再インデントしません (Nanoc で Haml オプションを設定する方法がわかりません)。
find_and_preserve
ヘルパー メソッドを使用することもできます。

これにより、インデントされたときに余分な空白の影響を受けないように、空白に敏感なタグのすべての改行が HTML エンティティ に置き換えられます。
= find_and_preserve(yield)
Haml は簡単な使用方法を提供しますfind_and_preserve
。結果で実行されることを除いて~
、 と同じように機能する=
find_and_preserve
ため、次のことができます。
~ yield