(autoload (quote sort-subr) "sort") (require (quote BibTeX-mode)) (defun bibtex-cleanup-buffer nil (interactive) (byte-code "ˆ d\"#)" [case-fold-search t nil bibtex-cleanup 1 set-marker make-marker "current buffer"] 6)) (defun bibtex-cleanup-region (start end) (interactive "r") (byte-code "ňb! @) b! 8)\" #+" [start t bound end case-fold-search nil bibtex-current-entry bibtex-current-field-data set-marker make-marker 1 bibtex-cleanup "region"] 10)) (defun bibtex-cleanup-entry (&optional n) (interactive "P") (byte-code "ň \"@ !8\" #+" [start n t bound case-fold-search nil bibtex-previous-entry 0 set-marker make-marker 1 bibtex-current-entry bibtex-cleanup "entries"] 8)) (defun bibtex-cleanup (start bound msg) "\ Clean up the bib file or part of it." (byte-code "\" \" \" \" \" )\"" [msg start bound message "Cleaning up %s..." bibtex-correct-empty-fields bibtex-delete-banners bibtex-delete-trailing-commas bibtex-abbrev-to-top bibtex-insert-title "Cleaning up %s...done"] 9)) (defun bibtex-abbrev-to-top (start bound &optional quiet) (byte-code " !b # `Sd)  0Ă3! b #!fUR W @ V8\" \" b c`)8 Ă!." [end bound base bibtex-entry-no-group-match nil t abbrev boa eoa astring quiet start bibtex-abbrev-match-fg marker-position 1 re-search-forward beginning-of-line message "Pulling all abbreviations to top..." match-beginning 0 64 bibtex-current-field bibtex-current-entry buffer-substring delete-region "Pulling all abbreviations to top...done"] 13)) (defun bibtex-delete-banners (start bound &optional quiet) "\ Delete the banner lines in all newly invoked entries. If the optional QUIET is non-nil, do this quietly. If START and BOUND are non-nil, do this within that region." (byte-code " ! ! b #% ! #8 !&AD!)" [quiet nil end bound start t message "Deleting banners in newly invoked entries..." marker-position search-forward "=========" beginning-of-line kill-line 1 search-backward "---------" "Deleting banners in newly invoked entries...done"] 10)) (defun bibtex-delete-trailing-commas (start bound &optional quiet) "\ Delete the trailing comma of every the entry. If the optional QUIET is non-nil, does this quietly. If START and BOUND are non-nil, does this within that region." (byte-code " ! ! b #K!`!#`)#E`WE!))TW!)" [quiet nil end bound start bibtex-entry-no-group-match t begin wpos message "Deleting trailing comma of every entry..." marker-position re-search-forward re-search-backward "[({]" forward-list 1 "\\w" "," delete-char "Deleting trailing comma of every entry...done"] 11)) (defun bibtex-correct-empty-fields (start bound &optional quiet) "\ Check and correct empty fields within region START..BOUND." (byte-code " ! b Ă! #Q #Ă&! `) 8  @  8 `WUb!L b !)k !L  \"z!L b!) P!L!@888\"?#8 8\" \" !5 8\" P!5 8\" $5 8\"5 $JP!G!J!.- ZĂ]!)" [end bound start quiet nil bibtex-field-empty t pos cf tp tb type bibtex-abbrev-empty bibtex-abbrev bibtex-entry-match ce eb ee et gabbrev spec bibtex-entry-types bibtex-entry-specs fl bibtex-extra-fields marker-position message "Correcting empty fields..." re-search-forward beginning-of-line bibtex-current-field 2 kill-line 1 looking-at bibtex-previous-field bibtex-required-text "Required abbreviation label: " string-equal "Required abbreviation text: " " -- required entry label: " bibtex-current-entry "%GROUP" bibtex-get-spec vortex-memq 4 3 " -- required field text: " bibtex-xor-text bibtex-or-text y-or-n-p " -- unknown entry type, kill it? " bibtex-kill-current-entry "Entry not killed. Proceeding..." "Correcting empty fields...done"] 32)) (defun bibtex-required-text (msg) (byte-code " !\" P!! !)!!!)" [text msg read-string string-equal "" ding message "Can't accept null string. Try again..." sit-for 1 bibtex-required-text insert-string "Text inserted." 0] 10)) (defun bibtex-optional-text (msg) (byte-code " !\" ! ! !+!!!)" [text msg read-string string-equal "" y-or-n-p "Killing current field, are you sure? " beginning-of-line kill-line 1 bibtex-optional-text insert-string message "Text inserted." sit-for 0] 10)) (defun bibtex-xor-text (type xorf begin end) (byte-code " # # #P # #)- !F #)@P!FP!*" [xors xorf filled begin t end type vortex-mkstring "" " *=" " *= *[\"{]\\w.*[\"}]" " *= *\\w.*$" re-search-backward re-search-forward beginning-of-line kill-line 1 bibtex-optional-text " -- first XOR field to be filled: (RET if not) " bibtex-required-text " -- the only XOR field remaining: "] 12)) (defun bibtex-or-text (type orf begin end) (byte-code " #  #) #)% P!* P!)" [ors orf begin t end type vortex-mkstring "" " *=" beginning-of-line re-search-backward re-search-forward bibtex-optional-text " -- OR field to be filled: (RET if not) " bibtex-required-text " -- the only OR field remaining: "] 8)) (defun bibtex-insert-title nil (byte-code "eb # ! %*" [cfn time nil t buffer-file-name current-time-string re-search-forward "File.*last modified on" beginning-of-line kill-line 1 insert-string "File " " last modified on " ". "] 11)) (defun bibtex-make-draft nil "\ Creates, previews, and prints a draft version of the .bib file." (interactive) (byte-code "̈  \"O P P P P P P P  ! Q!D Q!Q ! ! ! !o !x qdb!  & # # !). " [=cbn= =cfn= =pre0= =pre= =aux= =bbl= =tex= =dvi= =blg= =log= case-fold-search t nil buffer-name buffer-file-name 0 string-match "\\.bib" "+" ".aux" ".bbl" ".tex" ".dvi" ".blg" ".log" message "Making a draft bibliography..." buffer-modified-p y-or-n-p "Confirm cleanup? " bibtex-cleanup-buffer "Confirm writing \"" "\"? " write-file get-buffer-create bibtex-mkaux bibtex-bibtex bibtex-mktex bibtex-tex "Confirm previewing the draft? " bibtex-get-softcopy "Confirm printing the draft? " bibtex-get-hardcopy "*shell*" "Confirm saving the draft? " insert "\\rm " "* " " " shell-send-input "Making a draft bibliography...done (draft saved in %s & %s)" "\\.*" "Making a draft bibliography...done (temporary files deleted)"] 29)) (defun bibtex-shell-init (fn) (byte-code "! ! O!=rqdb ! ! !#FłI! ` `\") \"cłn \" !) )#q! U!!+" [proc dir fn default-directory cdir nil t shell-mode-map get-buffer-process "*shell*" file-name-directory 0 -1 process-status run stop-shell-subjob sleep-for 1 kill-shell-input insert-string "pwd" shell-send-input search-backward "/" previous-line beginning-of-line buffer-substring end-of-line string-equal "cd " shell define-key "" bibtex-goto-error message "Waiting for shell prompt..." buffer-size 2 "Waiting for shell prompt...done"] 25)) (defun bibtex-shell (first cmd &optional msgs) (byte-code "! ˋ\"" [=cfn= first cmd bibtex-error-pos msgs abort nil =pre= t bibtex-bibs file-exists-p ((byte-code " \" !!db! c`  P!4ƂO ! !# ȉ^ b#)Ɖ p!}!zƂ}! !!)!r" [first cmd =cfn= bibtex-error-pos msgs abort nil =pre= t bibtex-bibs message "Sending `%s' to shell..." bibtex-shell-init pop-to-buffer "*shell*" recenter 0 shell-send-input y-or-n-p "[Wait till finish if `y'] " stop-shell-subjob insert-string "kill %" sleep-for 1 "\\rm " "*" re-search-forward "^ --line\\|^ : Warning:\\|---line" error "Making a draft bibliography...abort (use C-c C-@ to locate BibTeX errors)" "BibTeX errors found, are you sure you want to continue? " "Making a draft bibliography...abort (temporary files deleted)" "Making a draft bibliography...continuing" "Type any key to continue..."] 20)) error "Making a draft bibliography...abort (nonexistent \"%s\")"] 4)) (defun bibtex-bibtex nil (byte-code " P#" [t =pre= bibtex-shell "bibtex " "Continue formatting the draft? "] 4)) (defun bibtex-tex nil (byte-code " P#" [nil =pre= bibtex-shell "tex " "Preview, print, or save the draft? "] 4)) (defun bibtex-get-softcopy nil (byte-code " R\"" [nil bibtex-softcopy =dvi= bibtex-shell " " "&"] 6)) (defun bibtex-get-hardcopy nil (byte-code "  Q \"  \"  A\"P  &\"+" [printer vortex-printer-query vortex-printer-list vortex-default-printer printer-data vortex-printer-data print-command vortex-default-print-command nil =dvi= vortex-printer-queue read-string "Which printer? " ": " assoc bibtex-shell concat " " "; "] 11)) (defun bibtex-mkaux nil "\ Creates .aux file to be BibTeXed." (byte-code "q )b\"͋΋\"" [=aux= label bibtex-entry-no-group-match nil t =cbn= style bibtex-abbrev-files =pre0= erase-buffer 1 message "Creating \"%s\" (for BibTeX)..." ((byte-code " #%#! q# q)b qb#)@!D \"" [label bibtex-entry-no-group-match nil t =aux= =cbn= "" re-search-forward "\\(\\w.*\\), *$" vortex-match-string 1 insert-string "\\citation{" "} " "\\\\citation{\\w.*}" "\\relax " error "%s: empty field or wrong format...abort."] 9)) ((byte-code "!\"ɉ5\"ˉ5\"+͉5\"5ω \" qdb ! &d %)" [style =aux= bibtex-abbrev-files =pre0= nil read-string "Style (RET=plain, 1=unsrt, 2=alpha, 3=abbrv, else=your-own-style): " string-equal "" "plain" "1" "unsrt" "2" "alpha" "3" "abbrv" message "Creating \"%s\" (for BibTeX)..." insert "\\bibdata{" bibtex-get-fn-string "} \\bibstyle{" "} " write-region 1 no-message] 14)) "Creating \"%s\" (for BibTeX)...done"] 5)) (defun bibtex-get-fn-string (lst) (byte-code "  @ \"Q A*" [string fn lst "" nil bibtex-get-base "\\.bib" ","] 5)) (defun bibtex-get-base (fn suffix) (byte-code " \"O" [fn suffix 0 string-match] 5)) (defun bibtex-mktex nil "\ Creates a .tex file as the bibliography." (byte-code "! \" \"͋ \"" [=bbl= nil =tex= t n bibtex-context =cfn= bibtex-preview-header file-exists-p error "%s: file doesn't exist...abort" message "Making \"%s\" as your bibliography..." ((byte-code "q !db!! `d\"eb#,‚0 \" e`\"# #!!!!!!#r!tdb! !Deb # \\#!!#!db! !)db!b # %cd%" [=tex= =bbl= nil t n bibtex-context =cfn= bibtex-preview-header erase-buffer insert-file-contents search-backward "\\end" previous-line 1 end-of-line delete-region search-forward "\\bibitem" error "%s: bad format...sborted." beginning-of-line re-search-forward "\\\\bibitem\\[\\w*\\]" "[" replace-match "{" "]" "}" insert-string re-search-backward "\\w" 0 "\\bye " insert "\\input " 10 " \\let\\em\\it \\def\\newblock{\\hskip .11em plus .33em minus -.07em} \\def\\bibitem#1#2#3{ {\\bigskip \\advance\\leftskip by 1in \\item{\\hbox to 1.25in{\\hss$\\lbrace#2\\rbrace$} \\quad\\hbox to .6in{\\hss[#1]}} #3\\par}} \\def\\etalchar#1{$^{#1}$} \\font\\big=cmbx10 scaled\\magstep3 \\nopagenumbers \\footline={{\\bf Time: }{\\sl " current-time-string "}\\hfil {\\bf File: }``{\\tt " "}''\\hfil {\\bf Page: } \\folio} \\centerline{\\big Draft Bibliography} \\vskip .15truein " write-region no-message] 44)) "Making \"%s\" as your bibliography...done"] 6)) (defvar bibtex-bibs nil "\ List of .bib files") (defun bibtex-goto-error nil "\ Positioning to next BibTeX error/warning." (interactive) (byte-code "ň#q  b#)!!!b !}! `#!! \"! `)#! \"! `#!! \" `#!! \"! `)#! \"` b! !! \"# \"!!1!   !!' , )!." [key bor eor pos fn nil case-fold-search t shell-mode-map bibtex-error-pos bibtex-path bibtex-bibs win tex-bib-to-bibtex-p define-key "" bibtex-goto-error "*shell*" bibtex-get-bibs re-search-forward "^ --line\\|^ : Warning:\\|---line" message "Positioning to next BibTeX error/warning..." pop-to-buffer match-beginning 0 beginning-of-line looking-at " --line" previous-line 1 "[1-9][0-9]*" match-end string-to-int buffer-substring "file \\([^ ]+.bib\\)" end-of-line vortex-file-exists-p vortex-match-string " : Warning:" "in \\(.*\\)$" recenter find-file-other-window goto-line bibtex-find-key search-backward / window-height 2 "Positioning to next BibTeX error/warning...done" get-buffer-window delete-window boundp exit-recursive-edit "Positioning to next BibTeX error/warning...not found"] 50)) (defun bibtex-get-bibs nil (byte-code "# b#\"! \"B )" [bibtex-bibs nil bibtex-error-pos t bibtex-path re-search-forward "^\\([^ ]*.bib\\) is" vortex-file-exists-p vortex-match-string 1] 6)) (defun bibtex-find-key (key lst) (byte-code "" [found (byte-code "*@!qb Q#\"@!\"&A \"" [lst key nil t find-file-noselect 1 re-search-forward "[({] *" " *," throw found find-file-other-window error "Pattern `%s' not found in any .bib files..."] 7)] 2)) (defun bibtex-sort-buffer nil (interactive) (byte-code "ˆ d\"#)" [case-fold-search t nil bibtex-sort 1 set-marker make-marker "current buffer"] 6)) (defun bibtex-sort-region (start end) (interactive "r") (byte-code "ňb! @) b! 8)\" #+" [start t bound end case-fold-search nil bibtex-current-entry bibtex-current-field-data set-marker make-marker 1 bibtex-sort "region"] 10)) (defun bibtex-sort (start bound msg) "\ Sort the bib file or part of it." (byte-code "\" b$)\"" [msg start nil message "Sorting entries in %s..." sort-subr next-rec end-rec start-key "Sorting entries in %s...done"] 6)) (defun next-rec nil (byte-code " !#!b)" [end bound t marker-position re-search-forward "^@" backward-char 1] 5)) (defun end-rec nil (byte-code "!\"" [bound re-search-forward "^$" marker-position] 4)) (defun start-key nil (byte-code "!#`!! `\"!)" [bound t xx re-search-forward "\\s(" marker-position search-forward "," backward-char 1 downcase buffer-substring] 8))