SSブログ

EmacsでのPDFファイルの表示 [Linux]

Emacs での PDF ファイルの表示について、簡単にまとめてみた。

・Emacs のバージョン:
 Emacs 26.1 (on Debian 10)、Emacs 24.3.1 (on CentOS 7)
・DocView mode を使用する。

1. PDF ファイルの表示


*.pdf ファイルを開く。


2. DocView の主な機能


(1) 表示位置の変更

# 次ページ
doc-view-next-page (n)
# 前ページ
doc-view-previous-page (p)
# 次の行
doc-view-next-line-or-next-page (C-n, <down>)
# 前の行
doc-view-previous-line-or-previous-page (C-p, <up>)
# 上方にスクロール
doc-view-scroll-up-or-next-page (SPC)
# 下方にスクロール
doc-view-scroll-down-or-previous-page (S-SPC)
# 最初のページ
doc-view-first-page (M-<)
# 最後のページ
doc-view-last-page (M->)


(2) 表示の拡大/縮小

# 拡大
doc-view-enlarge (+, =)
# 縮小
doc-view-shrink (-)
# リセット
doc-view-scale-reset (0)
# 縦方向のサイズをウィンドウに合わせる
doc-view-fit-height-to-window (H)
# 横方向のサイズをウィンドウに合わせる
doc-view-fit-width-to-window (W)
# ページ全体がウィンドウに収まるサイズに変更
doc-view-fit-page-to-window (P)


(3) 表示方法の変更

# テキストのみの表示
doc-view-open-text (C-c C-t)


Emacs のバージョンにより、実現方法が異なる。
 Emacs 26.1 (on Debian 10) の場合: 表示データの変更
 Emacs 24.3.1 (on CentOS 7) の場合: バッファーの追加
表示されたテキストについては、通常の検索が可能である。

# ドキュメント編集、ドキュメント閲覧の切替
doc-view-toggle-display (C-c C-c)

# テキストのみの表示の終了
Emacs のバージョンにより、手順が異なる。
・Emacs 26.1 (on Debian 10) の場合: doc-view-toggle-display (C-c C-c)
 2 回実行し、ドキュメント閲覧に切り替える。
・Emacs 24.3.1 (on CentOS 7) の場合: DocView モードのバッファーを選択


(4) DocView モードでの検索

doc-view-show-tooltip (C-t)
doc-view-search (C-s) または doc-view-search-backward (C-r)


・ドキュメント閲覧において、ツールチップを有効にし、検索を実施する。
検索結果は、マウス位置のツールチップに表示される。
ドキュメント閲覧のバッファーでは、検索結果を表示できない。


(5) キャッシュのクリア

# キャッシュ・ディレクトリの確認
C-h v
doc-view-cache-directory を指定

# キャッシュのクリア
M-x doc-view-clear-cache


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

xpdfで複数ファイルを表示するスクリプトの作成 [Linux]

xpdf で複数ファイルを表示するスクリプトを作成してみた。

・xpdf の起動後に追加選択できるが、ファイル選択が面倒なのでスクリプトで対応。
・xpdf の特定の機能で文字化けが発生するが、動作が軽快なため時々使用している。
 しおりの表示(左側のペイン)で日本語が文字化けする。
 検索時のキーワード入力で日本語が文字化けするため、日本語の検索ができない。

詳細は、以下の通りである。

1. スクリプト (Xpdf)
#!/bin/bash
#
# View PDF files with xpdf.
# usage: Xpdf [file ...]
#

# check existence of PDF files
check_pdf_file() {
    local status=0
    local i

    for i in $*; do
        case $i in
        *.pdf)
            if [ ! -f $i ] || [ ! -r $i ]; then
                echo ">> $i: no such file"
                status=1
                break
            fi
            ;;
        *)
            echo ">> $i: not PDF file"
            status=1
            break
            ;;
        esac
    done

    return $status
}

# execute xpdf
exec_xpdf() {
    local x_gap=20 pos
    local a_pid=()
    local status=0
    local i j

    if [ $# != 0 ]; then
        j=`ps acx | grep -c "xpdf$"`
        for i in $*; do
            pos="+$(($x_gap * $j))+0"
            xpdf -g $pos $i 2> /dev/null &
            a_pid+=($!)
            j=$(($j +1))
            sleep 0.2
        done

        # get status of background jobs
        for i in ${a_pid[*]}; do
            wait $i
            j=$?
            if [ $status = 0 ]; then
                status=$j
            fi
        done
    else
        xpdf -g +0+0 2> /dev/null
        status=$?
    fi

    return $status
}

if ! which xpdf >/dev/null 2>&1; then
    echo "xpdf: command not found"
    exit 1
elif [ $# = 0 ] || check_pdf_file $*; then
    exec_xpdf $*
fi

exit $?

2. 使用方法
% Xpdf [file ...]

[備考]


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。