grepを使用するとコンソールに出力を表示する

grepを使用するとコンソールに出力を表示する

vim では、次のコマンドを使用して tex ファイルをコンパイルします。

pdflatex\ \-file\-line\-error\ \-shell\-escape\ \-interaction=nonstopmode\ $*\\\|\ grep\ \-P\ ':\\d{1,5}:\ '

これにより、エラーがクイック修正ウィンドウに表示されます(vimを使用していない場合はこの文を無視してください)。唯一の問題は、ドキュメントがコンパイルされている間にラテックス出力が画面に表示されるかどうかを確認したいことです。(今grepはすべての出力を食べます)。

これを達成するには何を変更する必要がありますか?私はそれをすべてパイピングしようとしましたが、tail役に立ちませんでした。

This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011) (format=preamble 2011.10.2)  3 OCT 2011 23:16
entering extended mode
 \write18 enabled.
 file:line:error style messages enabled.
 %&-line parsing enabled.
**main.tex
(./main.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2011-07-01, ngerman-x-2011-07-01, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
 icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
 lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
ish, portuguese, romanian, russian, sanskrit, serbian, serbianc, slovak, sloven
ian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded
.
PRECOMILED PREAMBLE LOADED

LaTeX Warning: Overwriting file `./main.bib'.

\openout15 = `main.bib'.


\openout4 = `main.auxlock'.

Package biblatex Info: Trying to load language 'english'...
Package biblatex Info: ... file 'english.lbx' found.
(/usr/local/texlive/2011/texmf-dist/tex/latex/biblatex/lbx/english.lbx
File: english.lbx 2011/07/29 v1.6 biblatex localization
)

Package biblatex Warning: 'babel' detected but 'csquotes' missing.
(biblatex)                Loading 'csquotes' recommended.

\@quotelevel=\count451
\@quotereset=\count452
(./main.aux)
\openout1 = `main.aux'.

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 42.
LaTeX Font Info:    ... okay on input line 42.
LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 42.
LaTeX Font Info:    Try loading font information for TS1+cmr on input line 42.
 (/usr/local/texlive/2011/texmf-dist/tex/latex/base/ts1cmr.fd
File: ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info:    ... okay on input line 42.
Package caption Info: Begin \AtBeginDocument code.
Package caption Info: subfig package 1.2 or 1.3 is loaded.
Package caption Info: float package is loaded.
Package caption Info: hyperref package is loaded.
Package caption Info: wrapfig package is loaded.
Package caption Info: End \AtBeginDocument code.

(/usr/local/texlive/2011/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count453
\scratchdimen=\dimen319
\scratchbox=\box86
\nofMPsegments=\count454
\nofMParguments=\count455
\everyMPshowfont=\toks48
\MPscratchCnt=\count456
\MPscratchDim=\dimen320
\MPnumerator=\count457
\makeMPintoPDFobject=\count458
\everyMPtoPDFconversion=\toks49
) (/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf

(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/grfext.sty
Package: grfext 2010/08/19 v1.1 Managing graphics extensions (HO)
)
Package grfext Info: Graphics extension search list:
(grfext)             [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
G,.JBIG2,.JB2,.eps]
(grfext)             \AppendGraphicsExtensions on input line 452.

(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
Package biblatex Info: No input encoding detected.
(biblatex)             Assuming 'ascii'.
Package biblatex Info: Automatic encoding selection.
(biblatex)             Assuming data encoding 'ascii'.
\openout3 = `preamble-blx.bib'.

Package biblatex Info: Trying to load bibliographic data...
Package biblatex Info: ... file 'main.bbl' not found.

No file main.bbl.
Package biblatex Info: Reference section=0 on input line 42.
Package biblatex Info: Reference segment=0 on input line 42.
ABD: EveryShipout initializing macros
\AtBeginShipoutBox=\box87
Package hyperref Info: Link coloring ON on input line 42.

(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2010/04/30 v2.40 Cross-referencing by name of section

(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO)
)
\c@section@level=\count459
)
LaTeX Info: Redefining \ref on input line 42.
LaTeX Info: Redefining \pageref on input line 42.
LaTeX Info: Redefining \nameref on input line 42.

(./main.out) (./main.out)
\@outlinefile=\write8
\openout8 = `main.out'.


(/usr/local/texlive/2011/texmf-dist/tex/latex/beamer/translator/dicts/translato
r-basic-dictionary/translator-basic-dictionary-English.dict
Dictionary: translator-basic-dictionary, Language: English 
)
(/usr/local/texlive/2011/texmf-dist/tex/latex/siunitx/config/siunitx-abbreviati
ons.cfg
File: siunitx-abbreviations.cfg 2011/09/13 v2.3f siunitx: Abbreviated units
)
(/usr/local/texlive/2011/texmf-dist/tex/latex/siunitx/config/siunitx-binary.cfg
File: siunitx-binary.cfg 2011/09/13 v2.3f siunitx: Binary units
)
LaTeX Info: Redefining \microtypecontext on input line 42.
Package microtype Info: Generating PDF output.
Package microtype Info: Character protrusion enabled (level 2).
Package microtype Info: Using default protrusion set `alltext'.
Package microtype Info: Automatic font expansion enabled (level 2),
(microtype)             stretch: 20, shrink: 20, step: 1, non-selected.
Package microtype Info: Using default expansion set `basictext'.
Package microtype Info: No tracking.
Package microtype Info: No adjustment of interword spacing.
Package microtype Info: No adjustment of character kerning.
Package microtype Info: Redefining babel's language switching commands.
 (/usr/local/texlive/2011/texmf-dist/tex/latex/microtype/mt-cmr.cfg
File: mt-cmr.cfg 2009/11/09 v2.0 microtype config. file: Computer Modern Roman 
(RS)
)
\c_siunitx_mathsf_int=\count460
LaTeX Font Info:    Try loading font information for U+msa on input line 42.

(/usr/local/texlive/2011/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2009/06/22 v3.00 AMS symbols A
)
(/usr/local/texlive/2011/texmf-dist/tex/latex/microtype/mt-msa.cfg
File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS)
)
LaTeX Font Info:    Try loading font information for U+msb on input line 42.

(/usr/local/texlive/2011/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2009/06/22 v3.00 AMS symbols B
)
(/usr/local/texlive/2011/texmf-dist/tex/latex/microtype/mt-msb.cfg
File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS)
)
LaTeX Font Info:    Try loading font information for U+esint on input line 42.

(/usr/local/texlive/2011/texmf-dist/tex/latex/esint/uesint.fd
File: uesint.fd 
)
LaTeX Font Info:    Try loading font information for U+rsfs on input line 42.

(/usr/local/texlive/2011/texmf-dist/tex/latex/jknapltx/ursfs.fd
File: ursfs.fd 1998/03/24 rsfs font definition file (jk)
)
\c_siunitx_mathtt_int=\count461

./main.tex:47: Undefined control sequence.
l.47 \akaka

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

Package atveryend Info: Empty hook `BeforeClearDocument' on input line 51.
[1{/usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 51.

(./main.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 51.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 51.
Package rerunfilecheck Info: File `main.out' has not changed.
(rerunfilecheck)             Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
Package logreq Info: Writing requests to 'main.run.xml'.
\openout1 = `main.run.xml'.

 ) 
Here is how much of TeX's memory you used:
 2167 strings out of 455899
 40306 string characters out of 2353312
 1131909 words of memory out of 3000000
 42382 multiletter control sequences out of 15000+200000
 26633 words of font info for 111 fonts, out of 3000000 for 9000
 831 hyphenation exceptions out of 8191
 36i,6n,45p,773b,1377s stack positions out of 5000i,500n,10000p,200000b,50000s
{/usr/local/texlive/2011/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}
</usr/local/texlive/2011/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></
usr/local/texlive/2011/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb></us
r/local/texlive/2011/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb>
Output written on main.pdf (1 page, 19387 bytes).
PDF statistics:
 29 PDF objects out of 1000 (max. 8388607)
 22 compressed objects within 1 object stream
 2 named destinations out of 1000 (max. 500000)
 23053 words of extra memory for PDF output out of 24883 (max. 10000000)

Vimは次のように表示する必要があります:

main.tex l.47 undefined control sequence

しかし、私はどのページがコンパイルされているかなどに関するフィードバックを得るために出力を見たいと思います。

答え1

errorformat出力の代わりにgrepを試しましたか? CFhttp://vim.wikia.com/wiki/Errorformats。コマンドを設定するとmakehttp://vim.wikia.com/wiki/Make_make_more_helpful)。

更新された出力、ありがとう、romovs。似たようなものが欲しいようです。

set errorformat=%E%f:%l:\ %m%C1.%l\ %Z

これをテストすることはできませんが、出力結果によると、好きなようになったようです。

答え2

あなたは本当に確認してください。消しゴム(多くのディストリビューションにパッケージされています):

Rubberは、LaTeX文書の編集に関連するすべてのタスクを処理することを目的としたプログラムです。もちろん、これはドキュメント自体をコンパイルし、すべての参照を定義するのに十分な時間を許可し、BibTeXを実行して参考文献を管理することを含みます。また、PostScript文書を生成するためのdvipsの自動実行とPDF文書を生成するためのpdfLaTeXの使用も含まれます。

ゴム協会隠れるすべての出力(.logファイルにリダイレクト)と関連エラーメッセージのみを表示電話したとき。

答え3

出力バッファリングについてです。

あなたが直面している問題は動作方法ではありませんgrep管路する。またはより正確にはpdflatex 許可する配管作業。標準的な方法でパイプを使用してください。つまり、パイプを通る出力は次のようになります。バッファリング。プログラムは、pdflatex独自の出力をバッファリングできるかどうかを決定します。わかりませんが、このプログラム部分でリダイレクトされた出力をバッファリングしないように指示する標準オプションがないと思います。

stdbufしかし、このプログラムを command() 周りの一種のラッパーとして使用し、pdflatex出力ストリームの文字を必要に応じて調整できます。

stdbuf -oL pdflatex -file-line-error ... | grep ...

または

stdbuf -o0 pdflatex -file-line-error ... | grep ...

(読みやすくするためにエスケープが削除され、コマンドが切り捨てられました。)man stdbuf詳細については、参考資料を参照してください。

または、次のことができます。いたずら pdflatex(かなり無害)出力がリダイレクトされないと「考える」ため、出力をバッファリングしません。このscriptプログラムは次の目的で使用できます。

script -c 'pdflatex -file-line-error ... ' | grep ...

完全なpdflatex ...コマンドは引用符で囲む必要があります。

答え4

最後のコマンドを実行する前に制御端末にteeアクセスしてみましょうかstdout/dev/ttystdoutgrep

# example using ls instead of pdflatex in Bash

# all of stdout goes to the controlling terminal before grep
ls -ld / errorfile 2>&1 | tee /dev/tty | grep error

# only grep-filterd stdout goes to the controlling terminal before the final grep
ls -ld / errorfile 2>&1 | tee >(grep --line-buffered error > /dev/tty) | 
    grep error

関連情報