4

コードの行番号を余白に入れて印刷する方法を知っている人はいますか?行番号を表示できますが、印刷には表示できません。ありがとう!

4

3 に答える 3

4

一時的なオーバーレイを使用して行番号を追加し、パッケージを使用してバッファをHTMLに変換できます。その後、HTMLを保存し、またはブラウザhtmlizeを使用して印刷できます。lpr

(defun htmlize-with-line-numbers ()
  (interactive)
  (goto-char (point-min))
  (let ((n 1))
    (while (not (eobp))
      (htmlize-make-tmp-overlay (point) (point) `(before-string ,(format "%4d " n)))
      (setq n (1+ n))
      (forward-line 1)))
  (switch-to-buffer (htmlize-buffer)))

これには、の最新バージョンが必要になりますhtmlize

于 2012-11-28T10:20:16.673 に答える
3

もちろん、簡単でありながらハックな方法は、一時的に行番号をバッファに直接挿入することです。

C-<
C-M-% ^ RET \,(1+ \#) SPC RET

次にそれを印刷します

M-x print-buffer

その後、行番号を再度元に戻します。

C-/
C-u C-SPC

結果はあまり美しくはありませんが、使用可能です。3つの主な問題があります。

  • バッファに変更を加えています。特に、これはバッファが読み取り専用であってはならないことを意味します。
  • 行番号は左寄せです。つまり、行番号の桁数に応じて異なるインデントが得られます。
  • メジャーモードは行番号につまずき、構文の強調表示が失われます。白黒プリンターで印刷している場合でも、問題はありません。

より複雑な置換文字列を使用して、2番目のポイントを修正できます。

\,(format "%4d " (1+ \#))

ただし、との間の正しい桁数を指定できるように、最大​​行番号を知る必要が%ありdます。もちろん、バッファの最後にすばやくジャンプして、最大行数を確認することもできます。しかし、もっと重要なことは、行番号を印刷するたびにすべてを入力するのが面倒になっていることです。

于 2012-11-28T13:13:43.540 に答える
2

そのような古い投稿の解決策をお詫びします。結果がはるかに見栄えが良いので、私はps-print-bufferではなくを使用しました。とにかく、何らかの理由でマニュアルには記載されていませんが、のソースを見ると、行番号を含めるためにnil以外に設定できる変数が見つかります。print-bufferps-print.elps-line-number

M-x set-variable RET ps-line-number RET t

印刷できるように一時的に設定する必要があります。に永続的に設定することをお勧めしますinit.el

コマンドを使用して印刷することもできます。このM-x pr-interfaceコマンドは、あらゆる種類の印刷オプションのバッファーを表示します。

于 2017-03-30T21:57:46.340 に答える