diff options
author | Karl Berry <karl@freefriends.org> | 2009-08-19 00:23:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-08-19 00:23:08 +0000 |
commit | c30a905bf6955c8d144b5a94cc812f0c1400a1b1 (patch) | |
tree | 31fbf1d7d91c18fdf8749b171b8408456284c14b /Master | |
parent | 458f0d6cd95ba5d318c787ed7baf5c39b64f4206 (diff) |
new package/script findhyph
git-svn-id: svn://tug.org/texlive/trunk@14758 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
24 files changed, 982 insertions, 1 deletions
diff --git a/Master/bin/alpha-linux/findhyph b/Master/bin/alpha-linux/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/alpha-linux/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/findhyph b/Master/bin/i386-cygwin/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/i386-cygwin/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/findhyph b/Master/bin/i386-freebsd/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/i386-freebsd/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/i386-linux/findhyph b/Master/bin/i386-linux/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/i386-linux/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/i386-solaris/findhyph b/Master/bin/i386-solaris/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/i386-solaris/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/mips-irix/findhyph b/Master/bin/mips-irix/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/mips-irix/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/powerpc-aix/findhyph b/Master/bin/powerpc-aix/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/powerpc-aix/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/findhyph b/Master/bin/powerpc-linux/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/powerpc-linux/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/sparc-linux/findhyph b/Master/bin/sparc-linux/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/sparc-linux/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/findhyph b/Master/bin/sparc-solaris/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/sparc-solaris/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/universal-darwin/findhyph b/Master/bin/universal-darwin/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/universal-darwin/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/bin/win32/findhyph.exe b/Master/bin/win32/findhyph.exe Binary files differnew file mode 100755 index 00000000000..a93ef24732b --- /dev/null +++ b/Master/bin/win32/findhyph.exe diff --git a/Master/bin/x86_64-linux/findhyph b/Master/bin/x86_64-linux/findhyph new file mode 120000 index 00000000000..31f10c8c0de --- /dev/null +++ b/Master/bin/x86_64-linux/findhyph @@ -0,0 +1 @@ +../../texmf-dist/scripts/findhyph/findhyph
\ No newline at end of file diff --git a/Master/texmf-dist/doc/support/findhyph/Makefile b/Master/texmf-dist/doc/support/findhyph/Makefile new file mode 100644 index 00000000000..808cba34385 --- /dev/null +++ b/Master/texmf-dist/doc/support/findhyph/Makefile @@ -0,0 +1,10 @@ +TEX = \\documentclass{article}\\usepackage[T1]{fontenc}\\usepackage{textcomp}\\begin{document}\\input{fh.tex}\\end{document} + +doc: + pod2man -c "" ../findhyph > findhyph.1 + pod2text ../findhyph > findhyph.txt + echo $(TEX) > findhyph.tex + pod2latex -out fh.tex ../findhyph + pdflatex findhyph.tex + pdflatex findhyph.tex + rm fh.tex findhyph.aux findhyph.log findhyph.tex diff --git a/Master/texmf-dist/doc/support/findhyph/README b/Master/texmf-dist/doc/support/findhyph/README new file mode 100644 index 00000000000..17c56b1ca89 --- /dev/null +++ b/Master/texmf-dist/doc/support/findhyph/README @@ -0,0 +1,9 @@ +findhyph -- Perl program which finds all words hyphenated by TeX in a document; + see findhyph.pdf or findhyph.1 for details + +Copyright (c) Martin Budaj 2000, 2001, 2009 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +any later version. diff --git a/Master/texmf-dist/doc/support/findhyph/findhyph.bat b/Master/texmf-dist/doc/support/findhyph/findhyph.bat new file mode 100755 index 00000000000..cc8d2ce283a --- /dev/null +++ b/Master/texmf-dist/doc/support/findhyph/findhyph.bat @@ -0,0 +1,327 @@ +@rem = '--*-Perl-*-- +@echo off +if "%OS%" == "Windows_NT" goto WinNT +perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 +goto endofperl +:WinNT +perl -x -S %0 %* +if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl +if %errorlevel% == 9009 echo You do not have Perl in your PATH. +if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul +goto endofperl +@rem '; +#!/usr/bin/perl +#line 15 + +use warnings; +use Getopt::Std; +$opt_l = 'kKsSvVzZoOuUiIA'; # defaults for Slovak and Czech +$opt_c = $opt_f = $opt_h = $opt_v = 0; +getopts('cfphvl:'); + +$version_msg = "findhyph version 2.0\n"; +$help_msg = "\nUsage: findhyph [options] <yourtexfile.log>\n" . + "\n" . + "Options: -c display hyphenated words in context\n" . + " -f display font selectors\n" . + " -h display this help message\n" . + " -v display version\n" . + " -p generate file with prepositions left at the end of line\n" . + " -l=STRING use prepositions/conjunctions listed in STRING\n"; + +print ($version_msg) if $opt_v; +die ($help_msg) if $opt_h || !$ARGV[0]; +$filename = $ARGV[0]; +if ($filename =~ /\.(log|tex|dvi|ps|pdf)$/) { + $filename = $`; +} +open(IN, "$filename.log") or die ("Can't read $filename.log: $!\n"); +open(O1, ">$filename.hyph") or die ("Can't write $filename.hyph: $!\n"); +if ($opt_p) { + open(O2, ">$filename.prep") or die ("Can't write $filename.prep: $!\n"); +} + +$search = 0; +$pageno_allowed = 0; +$write_hyph_page = 0; +$write_prep_page = 0; +$act_text = ""; + +while(<IN>) { + chomp; + if (/^\@firstpass$/) { + $pageno_allowed = 0; + $endgraf = 0; + $demerits = 1e10; + $search = 1; + $search_hyphens = 0; + $act_break = 0; + $act_text = ""; + @USED = (); + %BREAKS = (); + next; + } + if (/^\@secondpass$/) { + $search_hyphens = 1; + $act_break = 0; + $act_text = ""; + @USED = (); + %BREAKS = (); + next; + } + if (/^\@emergencypass$/) { + $act_break = 0; + $act_text = ""; + @USED = (); + %BREAKS = (); + next; + } + if ($search && /^@@(\d+).+ t=(\d+) \-\> @@(\d+)/) { + $act_break = $1; + $BREAKS{$act_break}{'prev'} = $3; + if ($endgraf && $2 < $demerits) { + $max_break = $1; + $demerits = $2; + } + $act_text .= "\@$act_break\@"; + next; + } + if ($search && /^@\\par via @@/) { + $endgraf = 1; + next; + } + if ($search && /^@\\discretionary via @@/) { + $search_hyphens = 1; # @firstpass may contain words hyphenated by user + next; # using \discretionary + } + if ($search && /^@/) { + next; + } + if ($search && $endgraf && $_ eq "") { + $pageno_allowed = 1; + do_hyph(); + $search = 0; + next; + } + if ($search) { + $act_text .= $_; + } else { + if ($pageno_allowed && /\[(\-?\d+)(\.\-?\d+){0,9} ?(\]|\{|\<|$)/) { # page number + $pageno = $1; + $pageno_allowed = 0; + if ($write_hyph_page) { + print O1 "[$pageno]\n\n"; + $write_hyph_page = 0; + } + if ($write_prep_page) { + print O2 "[$pageno]\n\n"; + $write_prep_page = 0; + } + } + } +} + +close(O1); +close(O2) if $opt_p; + +sub do_hyph { + $br = $max_break; + while (1) { + $br = $BREAKS{$br}{'prev'}; + last if ($br == 0); + $USED[$br] = 1; + } + + for $i (1..$max_break-1) { + if (not defined $USED[$i]) { + $act_text =~ s/\@$i\@//; + }; + } + + if ($opt_f) { + $act_text =~ s/(\\\S+)\s+/$1\_/g; + } else { + $act_text =~ s/\\\S+\s+//g; # usually font selector, but also backslash in the text + } + + for $i (1..$max_break-1) { + if (defined $USED[$i]) { + if ($search_hyphens) { # hyphenated words + if ($act_text =~ /(\S+\@$i\@\S+)/) { # only hyphenated words match + $out_text = $1; + if ($opt_c) { + $context_before = $context_after = ""; + if ($act_text =~ /(\S+)\s+\S+\@$i\@/) {$context_before = $1;} + if ($act_text =~ /\@$i\@\S+\s+(\S+)/) {$context_after = $1;} + $out_text = "$context_before $out_text $context_after"; + } + $out_text =~ s/-//g; + $out_text =~ s/\@$i\@/-/g; + $out_text =~ s/\@\d+\@//g; # very narrow columns + print O1 "$out_text\n"; + $write_hyph_page = 1; + } + } + if ($opt_p) { # prepositions + if ($act_text =~ / (\S) \@$i\@/) { + $out_text = $1; + if ($out_text =~ /^[$opt_l]$/) { + if ($opt_c) { + $context_before = $context_after = ""; + if($act_text =~ /(\S+) \S \@$i\@/) {$context_before = $1;} + if($act_text =~ /\@$i\@ ?(\S+)/) {$context_after = $1;} + $out_text = "$context_before $out_text $context_after"; + $out_text =~ s/-//g; + $out_text =~ s/\@\d+\@//g; # very narrow columns + } + print O2 "$out_text\n"; + $write_prep_page = 1; + } + } + } + } + } +} + +__END__ + +=head1 NAME + +B<findhyph> -- find words hyphenated by TeX in a document + +=head1 INSTALLATION + +Copy B<findhyph> or B<findhyph.bat> (depending on OS used) to a directory +included in system PATH. Perl interpreter is required to be in +C</usr/bin/> for Unix-like systems or in PATH when using B<findhyph.bat>. + +=head1 SYNOPSIS + +=over 4 + +=item 1) + +set C<\tracingparagraphs=1> in a TeX document F<foo.tex> and run: + +=item 2) + +B<tex> F<foo.tex> + +=item 3) + +B<findhyph [options]> F<foo.log> + +=back + +=head1 OPTIONS + +=over 4 + +=item B<-c> + +display hyphenated words in context + +=item B<-f> + +display font selectors and other strings starting with a backslash character + +=item B<-v> + +display program version + +=item B<-p> + +generate file containing information about one-letter prepositions and +conjunctions left at the end of line + +=item B<-l=STRING> + +use prepositions/conjunctions listed in STRING instead of default list of +prepositions and conjunctions C<kKsSvVzZoOuUiIA> used for Slovak and Czech +language + +=back + +=head1 OUTPUT FILES + +=over 4 + +=item F<foo.hyph> + +List of hyphenated words. All punctuation characters, parentheses and +other character immediately preceding or following displayed words are included +in this list. TeX constructs which are too difficult to display (C<\hbox{}>, +C<\mark{}> etc.) are shown as C<[]>. Math mode is indicated by C<$> sign. + +Page numbers in square brackets refer to LOG file and may occasionally differ +from the typeset document. The reason is that TeX may need to break more +paragraphs than it would eventually fit on the page in order to find a page +break. + +Words hyphenated in footnotes are listed before the words hyphenated in the +paragraph in which the footnote is referenced. + +=item F<foo.prep> + +List of prepositions if option B<-p> is used. + +=back + +=head1 HISTORY + +=head4 1.0 (2001-04-08) + +=over 4 + +=item * + +public release + +=back + +=head4 2.0 (2009-08-10) + +=over 4 + +=item * + +fixes in line breaks detection algorithm; support for third pass of line +breaking algorithm in TeX (positive \emergencystretch); support for +discretionary breaks in the first pass + +=item * + +page number detection improved (recognized negative page numbers, compound page +numbers when C<\count1> to C<\count9> registers are non-zero +and C<[nn{mapfile}]>, C<[nnE<lt>pictureE<gt>]> and C<[nnE<lt>newlineE<gt>> +formats used by pdfTeX; false page number detection should be much more rare) + +=item * + +configurable list of prepositions and conjunctions + +=item * + +hyphenated words can be displayed in context + +=item * + +suggestions and testing by Pavel Striz + +=back + +=head1 LICENSE + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +any later version. + +=head1 AUTHOR + +Copyright (c) Martin Budaj E<lt>m.b@speleo.skE<gt> 2000, 2001, 2009 + +=cut + +__END__ +:endofperl diff --git a/Master/texmf-dist/doc/support/findhyph/findhyph.txt b/Master/texmf-dist/doc/support/findhyph/findhyph.txt new file mode 100644 index 00000000000..1362b9a8222 --- /dev/null +++ b/Master/texmf-dist/doc/support/findhyph/findhyph.txt @@ -0,0 +1,80 @@ +NAME + findhyph -- find words hyphenated by TeX in a document + +INSTALLATION + Copy findhyph or findhyph.bat (depending on OS used) to a directory + included in system PATH. Perl interpreter is required to be in + "/usr/bin/" for Unix-like systems or in PATH when using findhyph.bat. + +SYNOPSIS + 1) set "\tracingparagraphs=1" in a TeX document foo.tex and run: + + 2) tex foo.tex + + 3) findhyph [options] foo.log + +OPTIONS + -c display hyphenated words in context + + -f display font selectors and other strings starting with a backslash + character + + -v display program version + + -p generate file containing information about one-letter prepositions + and conjunctions left at the end of line + + -l=STRING + use prepositions/conjunctions listed in STRING instead of default + list of prepositions and conjunctions "kKsSvVzZoOuUiIA" used for + Slovak and Czech language + +OUTPUT FILES + foo.hyph + List of hyphenated words. All punctuation characters, parentheses + and other character immediately preceding or following displayed + words are included in this list. TeX constructs which are too + difficult to display ("\hbox{}", "\mark{}" etc.) are shown as "[]". + Math mode is indicated by "$" sign. + + Page numbers in square brackets refer to LOG file and may + occasionally differ from the typeset document. The reason is that + TeX may need to break more paragraphs than it would eventually fit + on the page in order to find a page break. + + Words hyphenated in footnotes are listed before the words hyphenated + in the paragraph in which the footnote is referenced. + + foo.prep + List of prepositions if option -p is used. + +HISTORY + 1.0 (2001-04-08) + * public release + + 2.0 (2009-08-10) + * fixes in line breaks detection algorithm; support for third pass of + line breaking algorithm in TeX (positive \emergencystretch); support + for discretionary breaks in the first pass + + * page number detection improved (recognized negative page numbers, + compound page numbers when "\count1" to "\count9" registers are + non-zero and "[nn{mapfile}]", "[nn<picture>]" and "[nn<newline>" + formats used by pdfTeX; false page number detection should be much + more rare) + + * configurable list of prepositions and conjunctions + + * hyphenated words can be displayed in context + + * suggestions and testing by Pavel Striz + +LICENSE + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or any later + version. + +AUTHOR + Copyright (c) Martin Budaj <m.b@speleo.sk> 2000, 2001, 2009 + diff --git a/Master/texmf-dist/scripts/findhyph/findhyph b/Master/texmf-dist/scripts/findhyph/findhyph new file mode 100755 index 00000000000..75af7d2a829 --- /dev/null +++ b/Master/texmf-dist/scripts/findhyph/findhyph @@ -0,0 +1,311 @@ +#!/usr/bin/perl + +use warnings; +use Getopt::Std; +$opt_l = 'kKsSvVzZoOuUiIA'; # defaults for Slovak and Czech +$opt_c = $opt_f = $opt_h = $opt_v = 0; +getopts('cfphvl:'); + +$version_msg = "findhyph version 2.0\n"; +$help_msg = "\nUsage: findhyph [options] <yourtexfile.log>\n" . + "\n" . + "Options: -c display hyphenated words in context\n" . + " -f display font selectors\n" . + " -h display this help message\n" . + " -v display version\n" . + " -p generate file with prepositions left at the end of line\n" . + " -l=STRING use prepositions/conjunctions listed in STRING\n"; + +print ($version_msg) if $opt_v; +die ($help_msg) if $opt_h || !$ARGV[0]; +$filename = $ARGV[0]; +if ($filename =~ /\.(log|tex|dvi|ps|pdf)$/) { + $filename = $`; +} +open(IN, "$filename.log") or die ("Can't read $filename.log: $!\n"); +open(O1, ">$filename.hyph") or die ("Can't write $filename.hyph: $!\n"); +if ($opt_p) { + open(O2, ">$filename.prep") or die ("Can't write $filename.prep: $!\n"); +} + +$search = 0; +$pageno_allowed = 0; +$write_hyph_page = 0; +$write_prep_page = 0; +$act_text = ""; + +while(<IN>) { + chomp; + if (/^\@firstpass$/) { + $pageno_allowed = 0; + $endgraf = 0; + $demerits = 1e10; + $search = 1; + $search_hyphens = 0; + $act_break = 0; + $act_text = ""; + @USED = (); + %BREAKS = (); + next; + } + if (/^\@secondpass$/) { + $search_hyphens = 1; + $act_break = 0; + $act_text = ""; + @USED = (); + %BREAKS = (); + next; + } + if (/^\@emergencypass$/) { + $act_break = 0; + $act_text = ""; + @USED = (); + %BREAKS = (); + next; + } + if ($search && /^@@(\d+).+ t=(\d+) \-\> @@(\d+)/) { + $act_break = $1; + $BREAKS{$act_break}{'prev'} = $3; + if ($endgraf && $2 < $demerits) { + $max_break = $1; + $demerits = $2; + } + $act_text .= "\@$act_break\@"; + next; + } + if ($search && /^@\\par via @@/) { + $endgraf = 1; + next; + } + if ($search && /^@\\discretionary via @@/) { + $search_hyphens = 1; # @firstpass may contain words hyphenated by user + next; # using \discretionary + } + if ($search && /^@/) { + next; + } + if ($search && $endgraf && $_ eq "") { + $pageno_allowed = 1; + do_hyph(); + $search = 0; + next; + } + if ($search) { + $act_text .= $_; + } else { + if ($pageno_allowed && /\[(\-?\d+)(\.\-?\d+){0,9} ?(\]|\{|\<|$)/) { # page number + $pageno = $1; + $pageno_allowed = 0; + if ($write_hyph_page) { + print O1 "[$pageno]\n\n"; + $write_hyph_page = 0; + } + if ($write_prep_page) { + print O2 "[$pageno]\n\n"; + $write_prep_page = 0; + } + } + } +} + +close(O1); +close(O2) if $opt_p; + +sub do_hyph { + $br = $max_break; + while (1) { + $br = $BREAKS{$br}{'prev'}; + last if ($br == 0); + $USED[$br] = 1; + } + + for $i (1..$max_break-1) { + if (not defined $USED[$i]) { + $act_text =~ s/\@$i\@//; + }; + } + + if ($opt_f) { + $act_text =~ s/(\\\S+)\s+/$1\_/g; + } else { + $act_text =~ s/\\\S+\s+//g; # usually font selector, but also backslash in the text + } + + for $i (1..$max_break-1) { + if (defined $USED[$i]) { + if ($search_hyphens) { # hyphenated words + if ($act_text =~ /(\S+\@$i\@\S+)/) { # only hyphenated words match + $out_text = $1; + if ($opt_c) { + $context_before = $context_after = ""; + if ($act_text =~ /(\S+)\s+\S+\@$i\@/) {$context_before = $1;} + if ($act_text =~ /\@$i\@\S+\s+(\S+)/) {$context_after = $1;} + $out_text = "$context_before $out_text $context_after"; + } + $out_text =~ s/-//g; + $out_text =~ s/\@$i\@/-/g; + $out_text =~ s/\@\d+\@//g; # very narrow columns + print O1 "$out_text\n"; + $write_hyph_page = 1; + } + } + if ($opt_p) { # prepositions + if ($act_text =~ / (\S) \@$i\@/) { + $out_text = $1; + if ($out_text =~ /^[$opt_l]$/) { + if ($opt_c) { + $context_before = $context_after = ""; + if($act_text =~ /(\S+) \S \@$i\@/) {$context_before = $1;} + if($act_text =~ /\@$i\@ ?(\S+)/) {$context_after = $1;} + $out_text = "$context_before $out_text $context_after"; + $out_text =~ s/-//g; + $out_text =~ s/\@\d+\@//g; # very narrow columns + } + print O2 "$out_text\n"; + $write_prep_page = 1; + } + } + } + } + } +} + +__END__ + +=head1 NAME + +B<findhyph> -- find words hyphenated by TeX in a document + +=head1 INSTALLATION + +Copy B<findhyph> or B<findhyph.bat> (depending on OS used) to a directory +included in system PATH. Perl interpreter is required to be in +C</usr/bin/> for Unix-like systems or in PATH when using B<findhyph.bat>. + +=head1 SYNOPSIS + +=over 4 + +=item 1) + +set C<\tracingparagraphs=1> in a TeX document F<foo.tex> and run: + +=item 2) + +B<tex> F<foo.tex> + +=item 3) + +B<findhyph [options]> F<foo.log> + +=back + +=head1 OPTIONS + +=over 4 + +=item B<-c> + +display hyphenated words in context + +=item B<-f> + +display font selectors and other strings starting with a backslash character + +=item B<-v> + +display program version + +=item B<-p> + +generate file containing information about one-letter prepositions and +conjunctions left at the end of line + +=item B<-l=STRING> + +use prepositions/conjunctions listed in STRING instead of default list of +prepositions and conjunctions C<kKsSvVzZoOuUiIA> used for Slovak and Czech +language + +=back + +=head1 OUTPUT FILES + +=over 4 + +=item F<foo.hyph> + +List of hyphenated words. All punctuation characters, parentheses and +other character immediately preceding or following displayed words are included +in this list. TeX constructs which are too difficult to display (C<\hbox{}>, +C<\mark{}> etc.) are shown as C<[]>. Math mode is indicated by C<$> sign. + +Page numbers in square brackets refer to LOG file and may occasionally differ +from the typeset document. The reason is that TeX may need to break more +paragraphs than it would eventually fit on the page in order to find a page +break. + +Words hyphenated in footnotes are listed before the words hyphenated in the +paragraph in which the footnote is referenced. + +=item F<foo.prep> + +List of prepositions if option B<-p> is used. + +=back + +=head1 HISTORY + +=head4 1.0 (2001-04-08) + +=over 4 + +=item * + +public release + +=back + +=head4 2.0 (2009-08-10) + +=over 4 + +=item * + +fixes in line breaks detection algorithm; support for third pass of line +breaking algorithm in TeX (positive \emergencystretch); support for +discretionary breaks in the first pass + +=item * + +page number detection improved (recognized negative page numbers, compound page +numbers when C<\count1> to C<\count9> registers are non-zero +and C<[nn{mapfile}]>, C<[nnE<lt>pictureE<gt>]> and C<[nnE<lt>newlineE<gt>> +formats used by pdfTeX; false page number detection should be much more rare) + +=item * + +configurable list of prepositions and conjunctions + +=item * + +hyphenated words can be displayed in context + +=item * + +suggestions and testing by Pavel Striz + +=back + +=head1 LICENSE + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +any later version. + +=head1 AUTHOR + +Copyright (c) Martin Budaj E<lt>m.b@speleo.skE<gt> 2000, 2001, 2009 + +=cut diff --git a/Master/texmf/doc/man/man1/findhyph.1 b/Master/texmf/doc/man/man1/findhyph.1 new file mode 100644 index 00000000000..27086ba6590 --- /dev/null +++ b/Master/texmf/doc/man/man1/findhyph.1 @@ -0,0 +1,221 @@ +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "FINDHYPH 1" +.TH FINDHYPH 1 "2009-08-10" "perl v5.10.0" "" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +\&\fBfindhyph\fR \*(-- find words hyphenated by TeX in a document +.SH "INSTALLATION" +.IX Header "INSTALLATION" +Copy \fBfindhyph\fR or \fBfindhyph.bat\fR (depending on \s-1OS\s0 used) to a directory +included in system \s-1PATH\s0. Perl interpreter is required to be in +\&\f(CW\*(C`/usr/bin/\*(C'\fR for Unix-like systems or in \s-1PATH\s0 when using \fBfindhyph.bat\fR. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.IP "1)" 4 +.IX Item "1)" +set \f(CW\*(C`\etracingparagraphs=1\*(C'\fR in a TeX document \fIfoo.tex\fR and run: +.IP "2)" 4 +.IX Item "2)" +\&\fBtex\fR \fIfoo.tex\fR +.IP "3)" 4 +.IX Item "3)" +\&\fBfindhyph [options]\fR \fIfoo.log\fR +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-c\fR" 4 +.IX Item "-c" +display hyphenated words in context +.IP "\fB\-f\fR" 4 +.IX Item "-f" +display font selectors and other strings starting with a backslash character +.IP "\fB\-v\fR" 4 +.IX Item "-v" +display program version +.IP "\fB\-p\fR" 4 +.IX Item "-p" +generate file containing information about one-letter prepositions and +conjunctions left at the end of line +.IP "\fB\-l=STRING\fR" 4 +.IX Item "-l=STRING" +use prepositions/conjunctions listed in \s-1STRING\s0 instead of default list of +prepositions and conjunctions \f(CW\*(C`kKsSvVzZoOuUiIA\*(C'\fR used for Slovak and Czech +language +.SH "OUTPUT FILES" +.IX Header "OUTPUT FILES" +.IP "\fIfoo.hyph\fR" 4 +.IX Item "foo.hyph" +List of hyphenated words. All punctuation characters, parentheses and +other character immediately preceding or following displayed words are included +in this list. TeX constructs which are too difficult to display (\f(CW\*(C`\ehbox{}\*(C'\fR, +\&\f(CW\*(C`\emark{}\*(C'\fR etc.) are shown as \f(CW\*(C`[]\*(C'\fR. Math mode is indicated by \f(CW\*(C`$\*(C'\fR sign. +.Sp +Page numbers in square brackets refer to \s-1LOG\s0 file and may occasionally differ +from the typeset document. The reason is that TeX may need to break more +paragraphs than it would eventually fit on the page in order to find a page +break. +.Sp +Words hyphenated in footnotes are listed before the words hyphenated in the +paragraph in which the footnote is referenced. +.IP "\fIfoo.prep\fR" 4 +.IX Item "foo.prep" +List of prepositions if option \fB\-p\fR is used. +.SH "HISTORY" +.IX Header "HISTORY" +1.0 (2001\-04\-08) +.IX Subsection "1.0 (2001-04-08)" +.IP "\(bu" 4 +public release +.PP +2.0 (2009\-08\-10) +.IX Subsection "2.0 (2009-08-10)" +.IP "\(bu" 4 +fixes in line breaks detection algorithm; support for third pass of line +breaking algorithm in TeX (positive \eemergencystretch); support for +discretionary breaks in the first pass +.IP "\(bu" 4 +page number detection improved (recognized negative page numbers, compound page +numbers when \f(CW\*(C`\ecount1\*(C'\fR to \f(CW\*(C`\ecount9\*(C'\fR registers are non-zero +and \f(CW\*(C`[nn{mapfile}]\*(C'\fR, \f(CW\*(C`[nn<picture>]\*(C'\fR and \f(CW\*(C`[nn<newline>\*(C'\fR +formats used by pdfTeX; false page number detection should be much more rare) +.IP "\(bu" 4 +configurable list of prepositions and conjunctions +.IP "\(bu" 4 +hyphenated words can be displayed in context +.IP "\(bu" 4 +suggestions and testing by Pavel Striz +.SH "LICENSE" +.IX Header "LICENSE" +This program is free software; you can redistribute it and/or modify +it under the terms of the \s-1GNU\s0 General Public License as published by +the Free Software Foundation; either version 2 of the License, or +any later version. +.SH "AUTHOR" +.IX Header "AUTHOR" +Copyright (c) Martin Budaj <m.b@speleo.sk> 2000, 2001, 2009 diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index a91685abb02..fd05cf2db45 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -103,7 +103,7 @@ my @WorkingTLP = qw( faktor fancybox fancyhdr fancynum fancyref fancytooltips fancyvrb FAQ-en fbs featpost feyn feynmf fge fig4latex figbas figflow - filecontents fink first-latex-doc + filecontents findhyph fink first-latex-doc fixfoot fixme fixpdfmag flagderiv flippdf float floatrow flowfram fltpoint fmtcount fn2end fnbreak diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index feb2a7fb357..ec898379e5b 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -221,6 +221,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw 'fc', "&MAKEflatten", 'featpost', "&MAKEfeatpost", 'feynmf', "&MAKEfeynmf", + 'findhyph', "&MAKEflatten", 'floatflt', "die 'skipping, nosell license'", 'foiltex', "die 'skipping, nosell license'", 'flowfram', "&MAKEflatten", @@ -272,6 +273,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw 'japanese', "die 'skipping, requires ptex'", 'jasthesis', "die 'skipping, license is unknown'", 'javadoc', "die 'skipping, requires java and no source'", + 'jflap2tikz', "die 'skipping, requires java'", 'jj_game', "die 'skipping, requires acrotex'", 'jsclasses', "die 'skipping, requires nonfree ptex/platex'", 'junicode', "&MAKEflatten", @@ -629,6 +631,7 @@ $standardsource='\.fdd|\.dtx|\.ins|\.c$|Makefile|configure.*|install-sh|\.drv'; 'eskdx', 'NULL', # leave makefiles 'eurosym', 'NULL', # leave makefiles, etc. 'feynmf', 'feynmf\.pl' . $standardsource, + 'findhyph', 'NULL', # leave makefile 'grid', 'rvdtx\.sty|' . $standardsource, 'hyphenex', '.*', 'mff', '\.mfj|\.bat|\.diz', @@ -1027,6 +1030,7 @@ $standardtex='\.(cfg|sty|clo|ldf|cls|def|fd|cmap|4ht)$'; 'feyn', 'fonts', 'fge', 'fonts', 'fig4latex', 'support', + 'findhyph', 'support', 'fltpoint', 'generic', 'fontch', 'plain', 'fontools', 'support', @@ -1472,6 +1476,7 @@ $standardxmt='\.xmt'; 'epspdf' => '(epspdf(|\.help|boot|tk)|\.rb|makegray\.pro)$', 'epstopdf' => 'epstopdf', 'fig4latex' => 'fig4latex', + 'findhyph' => 'findhyph$', 'fragmaster' => 'fragmaster.pl', 'latex2man' => 'latex2man$', 'latexmk' => '\.pl$', @@ -1493,6 +1498,7 @@ $standardxmt='\.xmt'; # packages which have man pages to install. Assume section 1 for now. %specialmans = ( + 'findhyph' => 'findhyph.1', 'pkfix-helper' => 'pkfix-helper.1', 'purifyeps' => 'purifyeps.1', 'texdirflatten' => 'texdirflatten.1', @@ -1513,6 +1519,7 @@ $standardclean = '\.head|\.tmp|\.dvi|\.log|\.out|\.aux|\.toc|\.lof|\.lot' 'chemscheme' => "$standardclean|jawltxdoc.sty", # temp file for doc 'chemstyle' => "$standardclean|jawltxdoc.sty", # temp file for doc 'elvish' => '\.pk3', # no pk files + 'findhyph' => 'findhyph.pdf', # we will generate from man ourselves 'gentle' => 'gentle.ps.gz', # pdf is enough 'hyph-utf8' => 'README', 'jadetex' => $standardclean # these sty files are in passivetex diff --git a/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc index c79eee83219..cf91bd7a7a1 100644 --- a/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc @@ -16,6 +16,7 @@ depend dvidvi depend dviljk depend dvipng depend dvipos +depend findhyph depend getnonfreefonts depend lacheck depend patgen diff --git a/Master/tlpkg/tlpsrc/fig4latex.tlpsrc b/Master/tlpkg/tlpsrc/fig4latex.tlpsrc index e69de29bb2d..2f077e9a783 100644 --- a/Master/tlpkg/tlpsrc/fig4latex.tlpsrc +++ b/Master/tlpkg/tlpsrc/fig4latex.tlpsrc @@ -0,0 +1 @@ +binpattern f bin/${ARCH}/fig4latex diff --git a/Master/tlpkg/tlpsrc/findhyph.tlpsrc b/Master/tlpkg/tlpsrc/findhyph.tlpsrc new file mode 100644 index 00000000000..2da7b08c4b6 --- /dev/null +++ b/Master/tlpkg/tlpsrc/findhyph.tlpsrc @@ -0,0 +1,2 @@ +docpattern +f texmf/doc/man/man1/findhyph.* +binpattern f bin/${ARCH}/findhyph |