Предлагаю забыть пред и просто положить его в текстовую область.
Ваш отступ останется, и ваш код не будет переноситься словами в середине пути или чего-то еще.
Проще выделить и текстовый диапазон в текстовой области, если вы хотите скопировать в буфер обмена.
Ниже приведена выдержка из php, так что если вы не в php, то способ упаковки специальных символов html будет отличаться.
<textarea style="font-family:monospace;" onfocus="copyClipboard(this);"><?=htmlspecialchars($codeBlock);?></textarea>
Информацию о том, как скопировать текст в буфер обмена в js, см. В Как скопировать в буфер обмена в JavaScript? .
Однако ...
Я только что проверил блоки кода стека и потока, и они обернулись в tag wrapped in <pre> tag with css ...</p>
<pre><code>code {
background-color: #EEEEEE;
font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
}
pre {
background-color: #EEEEEE;
font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
margin-bottom: 10px;
max-height: 600px;
overflow: auto;
padding: 5px;
width: auto;
}
Также содержимое блоков кода stackoverflow выделено синтаксисом с использованием (я думаю) http://code.google.com/p/google-code-prettify/.
Это хорошая настройка, но сейчас я просто собираюсь с textareas.