3

LaTeXモードC-c C-cでは、以下にバインドされます。

(TeX-command-master &optional OVERRIDE-CONFIRM)

通常、この対話型関数は、確認を求めるコマンド(おそらくLaTeXコンパイル)を実行します。

そのtex-buf.el中で読む:

プレフィックス引数OVERRIDE-CONFIRMが指定されている場合、確認は、 `TeX-command-list'のエントリではなく、正であることに依存します。

これは私にとって少し不可解であり、読書C-h v TeX-command-listは役に立ちませんでした。

すべての確認要求を回避するために、プレフィックス引数を「TeX-command-master」に渡すにはどうすればよいですか?

4

6 に答える 6

2

プレフィックス引数については、Emacsのドキュメントをご覧くださいC-u一般に、コマンドにプレフィックス引数とそれに続く数字を渡すことができます。1桁の数字の場合は、Meta数字の後に入力することもできます。したがって、正のプレフィックス引数を渡すには、次のようにTeX-command-master入力します。

M-1 C-c C-c

ただし、これにより、実際には別のミニバッファ確認が追加されます。つまり、LaTeXソースのコンパイルに使用されるシェルコマンドに関するものです。プレフィックス引数がない場合は、コマンドに依存するデフォルトが使用されます。

使用するコマンドに関する質問を避けたい場合は、次の方法で文書化されていない変数TeX-command-forceを「LaTeX」にバインドできます。

(setq TeX-command-force "LaTeX")

ただし、これには基本的に「latex」コマンドにバインドしているという欠点があり、C-c C-c「bibtex」や「view」などの他のコマンドは使用できません。

それ以外は、LaTeXモードではのカスタマイズはできませんC-c C-c。最善のオプションは、関数にアドバイスするか、ラッパー関数にTeX-command-queryバインドして動的に設定することです。バッファも自動保存する場合は、後者がおそらく推奨されるオプションです。C-c C-cTeX-command-force

于 2013-02-03T00:04:37.213 に答える
2

しばらくOVERRIDE-CONFIRMビットに戸惑い、それがどのように機能するのか理解できませんでした。最初にファイルを保存したり、ラテックスが必要であることを確認したりせずに、ファイルに対してラテックスを自動的に実行したい場合は、次のような関数を使用できます。

(defun my-run-latex ()
  (interactive)
  (TeX-save-document (TeX-master-file))
  (TeX-command "LaTeX" 'TeX-master-file -1))

これを便利なものにバインドするとC-c C-c、デフォルトの処理コマンドを使用する場合に使用できます。TeX-command「Latex」が呼び出したいプロセッサでない場合は、行を変更することをお勧めします。

于 2013-02-04T03:30:34.097 に答える
2

謎がOVERRIDE-CONFIRM続いているようです。その間、仲間は、私たちが管理できない場合はTeX-command-master、単にそれを書き直すことができると提案しています。

私のバージョンでは、彼に基づいて、バッファが変更されていない場合、外部ビューアが起動されます。バッファが変更された場合、コンパイラが実行されます。指定されたコマンドを保存または実行するための確認がないものすべて。

(defun my-run-latex ()
  (interactive)
  (if (buffer-modified-p)
      (progn  
        (setq TeX-save-query nil) 
        (TeX-save-document (TeX-master-file))
        (TeX-command "LaTeX" 'TeX-master-file -1))
    (TeX-view)))

もちろんmy-run-latex、どんなキーバインディングにもバインドできます。

ユーザーの観点からすると、これは私自身の質問に対する解決策です。終了タグをクリックしますか?さて、好奇心旺盛な男の観点から、私はまだ神秘的なTeX-command-master技術を理解することに興味があります。

誰かがたまたま知っているとしたら...

PSはい、TeX-save-queryファイルの保存要求をオーバーライドします。これもTeX-command-master、ですC-c C-c。ただし、コマンドアクションの確認を求められます。

于 2013-02-05T02:14:56.977 に答える
2

ビルド&ビュー

繰り返しますが、このソリューションは、の動作を変更する代わりに、TeX-command-masterそれを書き直します。と名付けられたコマンドの書き直されたバージョンはbuild-view、かなり単純なロジックに従います。

  1. LaTeXファイルバッファが変更されていない場合、デフォルトのビューアが実行されます。
  2. バッファがダーティの場合、デフォルトのLaTeXコンパイラが実行され、ビルド後、デフォルトのビューアで出力が開きます。

コードは次のとおりです。

(defun build-view ()
  (interactive)
  (if (buffer-modified-p)
      (progn  
    (let ((TeX-save-query nil)) 
    (TeX-save-document (TeX-master-file)))
    (setq build-proc (TeX-command "LaTeX" 'TeX-master-file -1))
    (set-process-sentinel  build-proc  'build-sentinel))
    (TeX-view)))

(defun build-sentinel (process event)    
  (if (string= event "finished\n") 
      (TeX-view)
    (message "Errors! Check with C-`")))

これで、指示されたビルドビュープロセスを入力M-x build-viewして開始するか、「F2」などの新しいキーバインディングに関連付けることができます。

(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "<f2>") 'build-view)))

注:Tylerが提案しているように、TeX-save-query変数はローカルで変更されるため、古いC-c C-c/TeX-command-masterは影響を受けず、確認を求め続けます。

このコードを編集して、読みやすくしたり、読みやすくしたりしてください。

于 2013-02-05T22:08:53.427 に答える
0

確認ダイアログなしでラテックスソースをコンパイルしたいだけの場合は、.emacsに以下を追加してください。

(setq TeX-command-force "")

その後、Cc Ccを使用してソースをコンパイルでき、確認を求められません。このソリューションの唯一の問題は、コマンドを変更できなくなることですが、ほとんどのドキュメントでは変更したくないでしょう。同時に、これを.emacsに追加してさらに柔軟性を高め、前者の動作と同等のCcCcを提供することをお勧めします。

(define-key LaTeX-mode-map "\C-c\C-a"   
   ;;; 'a' for ask, change to anything you want 
  (lambda (arg) (interactive "P") 
    (let ((TeX-command-force nil)) 
      (TeX-command-master arg)))) 

次に、ドキュメントを処理し、Cx Cs、Cc Cc、CcCvの順に実行してドキュメントを表示できます。他の人が提案しているように、saveコマンドでも同じことを実行して、保存時に自動的にコンパイルすることができますが、私のドキュメントの一部はCVSにあるため、フックをかけることは避けています。

これに関するいくつかの助けのためのIvanへのクレジット-彼がStackOverflowにいるかどうかわからない

于 2013-02-27T21:31:39.040 に答える
0

この質問の要点は、「すべてのキーを押したり確認したりせずに、AUCTeXからTeXドキュメントをすばやくコンパイルするにはどうすればよいですか?」だと思います。

それに対する私の答えは、AUCTeXに強制するのではなく、latexmkコマンドを使用することです。

ラテックスmk-pdf-pvc myfile.tex

ラテックスmkは問題のファイルを監視し、保存するとすぐに再構築します。優れたPDFビューアを使用すると、PDFの変更に気づき、すぐに再表示されます。OS Xでは、スキムはこれに適しています。

于 2015-02-14T12:33:20.793 に答える