Slide 1

Slide 1 text

New Features in Texdoc 3.0 New Features in Texdoc 3.0 Takuto ASAKURA (wtsnjp) National Institute of Informatics BachoTEX 2018 1 / 26

Slide 2

Slide 2 text

New Features in Texdoc 3.0 What is Texdoc? … A command line tool … Search & view documents in TEX Live … Cross-platform (Windows, macOS, Linux, etc.) Usage $ texdoc [hoptionsi] hkeywordi … Typically, hkeywordi is a package name … Documents related to hkeywordi will be shown Please try “texdoc texdoc” for more details 2 / 26

Slide 3

Slide 3 text

New Features in Texdoc 3.0 Why did I become a maintainer of Texdoc? (off-topic) 3 / 26

Slide 4

Slide 4 text

New Features in Texdoc 3.0 Snowman culture in Japan … Snowman is popular among Japanese TEXperts … They are known as “Snowman Comedians” … August 8th ( / ) is “Snowman’s Day” … Just like the Duck culture in the West (?) Japan Western countries 4 / 26

Slide 5

Slide 5 text

New Features in Texdoc 3.0 Variety of snowman in glyphs A1 Gothic Shuei Nijimi Mincho Shuei Maru Gothic Bunkyu Gothic HGP Gothic Nishiki-teki Ro Hon Mincho Meiryo 5 / 26

Slide 6

Slide 6 text

New Features in Texdoc 3.0 SC-series: L A TEX packages … The scsnowman package DL CTAN … Displaying many variants of snowmen … Utilizing TikZ (independent from fonts) … cf. There is package tikzducks for duck lovers Examples scsnowman tikzducks T EX … The scpremiumfriday package DL GitHub … The scwrapfig package DL GitHub 6 / 26

Slide 7

Slide 7 text

New Features in Texdoc 3.0 The Whitesnowman language … A variant of the Whitespace language, using: … ⇤ (U+2603) Space … ƒ (U+26C4) Tab … « (U+26C7) New line … I developed an interpreter in TEX DL GitHub Example 7 / 26

Slide 8

Slide 8 text

New Features in Texdoc 3.0 SC-ripts: TEX-related scripts There are also SC-variant scripts DL GitHub Mostly develped by Takayuki YATO (a.k.a. ZR) … scmakesvf: creating Snowman VFs … scmendex: variant of mendex† … scptex2pdf: variant of ptex2pdf … scxml2ltx: variant of xml2ltx I also created one. . . … sctexdoc: variant of Texdoc DL Gist To develop above, I read the souce code of Texdoc ! I became familiar with its implementation! †Japanese-aware version of makeindex program 8 / 26

Slide 9

Slide 9 text

New Features in Texdoc 3.0 Let’s talk about Texdoc 3.0 9 / 26

Slide 10

Slide 10 text

New Features in Texdoc 3.0 Current status of Texdoc … Maintained by the TEX Live team: Karl Berry, Norbert Preining, and me … Development is hosted on GitHub ! The svn on puszcza has been dropped! … Texdoc 2.0171 is the latest (TEX Live 2017) … Main features of v3.0 is already implemented ! Those are in fuzzy_search branch Please visit: https://github.com/TeX-Live/texdoc 10 / 26

Slide 11

Slide 11 text

New Features in Texdoc 3.0 New features in Texdoc 3.0 … New option parser ! to specify multiple options much easier … Fuzzy search ! now you can mistype hkeywordi … Other small changes … Documentation updates … Removing a chache file There is no major update since 2012. . . Now it’s time to change a lot! 11 / 26

Slide 12

Slide 12 text

New Features in Texdoc 3.0 New option parser Features … POSIX compatible as much as possible … Allowing the users to group short options Example In the past versions: $ texdoc -v -l -I ... Now, you can specify just like: $ texdoc -vlI ... 12 / 26

Slide 13

Slide 13 text

New Features in Texdoc 3.0 What is fuzzy search? 13 / 26

Slide 14

Slide 14 text

New Features in Texdoc 3.0 How to implement fuzzy search? Levenshtein distance … Differnce between two strings … Minimum number of single-character edits … insertions … deletions … substitutions Example Levenshtein distance between “duck” and “dog”: 1. duck deletion ! duc 2. duc substitution ! dug 3. dug substitution ! dog The distance is 3 14 / 26

Slide 15

Slide 15 text

New Features in Texdoc 3.0 Calculating Levenshtein distance Levenshtein distance can be calculated with DP: … considering two strings , b; and … let | |, |b| are lengths of , b respectively. Calculating the distance in O(| ||b|) time: lev ,b( , j) = 8 > > > < > > > : m x( , j) if min( , j) = 0; otherwise, min 8 < : lev ,b( 1, j) + 1 lev ,b( , j 1) + 1 lev ,b( 1, j 1) + 1( 6=bj) 15 / 26

Slide 16

Slide 16 text

New Features in Texdoc 3.0 Don’t you think. . . we heard similar story last year? Implementing bioinformatics algorithms in TEX The Gotoh algorithm: DP Sequence alignment has a slightly more complex scoring scheme. Example m tch = 1, mism tch = 1, g( ) = d ( 1)e The algorithm Sequence alignment in O(mn) time: M +1,j+1 = m x ¶ M j, j , y j © + c bj where +1,j = m x ¶ M j d, j e, y j d © , y ,j+1 = m x ¶ M j d, y j e © . 5 / 11 16 / 26

Slide 17

Slide 17 text

New Features in Texdoc 3.0 Fuzzy search in Texdoc 3.0 … Running when the normal search cannot find any documentation in TEX Live … Finding a package name which has minimum Levenshtein distance with the hkeywordi Let me show you a demonstration! More details … The default allowance is up to 5 … To change: set fuzzy_level in texdoc.cnf … Set the value to 0, disable fuzzy search … The result is shown as “info” message 17 / 26

Slide 18

Slide 18 text

New Features in Texdoc 3.0 Other changes in Texdoc 3.0 These are small things, now we’re working on: Documentation updates … Explaining about new features … Removing old information Removing a cache file … A large cache file was in the repo (1.5 MB) … It was used only when tlpdb does not exist ! It won’t happen in normal TEX Live 18 / 26

Slide 19

Slide 19 text

New Features in Texdoc 3.0 Call for testers … Where can we get the development version? ! https://github.com/TeX-Live/texdoc … How to run the development version? ! http://tug.org/texdoc/dev/ 19 / 26

Slide 20

Slide 20 text

New Features in Texdoc 3.0 How to report bugs? … Creating issues on GitHub … Pull requests are also welcome … Sending a mail to the mailing list … [email protected] 20 / 26

Slide 21

Slide 21 text

New Features in Texdoc 3.0 Lastly, I’d like discuss about the future of Texdoc 21 / 26

Slide 22

Slide 22 text

New Features in Texdoc 3.0 Other functions of Texdoc Alias … Aliases can be defined in texdoc.cnf … Both the original and name will be searched alias horiginal keywordi = hnamei Adjusting score (in ad-hoc) … You can adjust score in texdoc.cnf adjscore hpatterni = hscore adjustmenti 22 / 26

Slide 23

Slide 23 text

New Features in Texdoc 3.0 Improving fuzzy search Finding Scoring Results exist? Viewing Fuzzy search yes no … Even if the results exist for normal search, could fuzzy results still be helpful? … Can fuzzy results win the normal results? … Should we not only search package names? ! What it should be? 23 / 26

Slide 24

Slide 24 text

New Features in Texdoc 3.0 Problems in the scoring The scoring scheme needs to be improved: Too much adjscore (in default) Too many false cases Too complicated Possible solution … Allowing package authors to control the priority of the documents in their package ! How to compare among other packages? … Using useful meta data in tlpdb We need your wonderful ideas 24 / 26

Slide 25

Slide 25 text

New Features in Texdoc 3.0 Documents not included in TEX Live Problem There is no way to find the documents Solution 1 … A variety of alias to specify absolute paths alias* foo = /path/to/your/foobar.pdf Solution 2 … Make it possible to specify particular directory Example ~/texdoc … Searching the documents in the directory 25 / 26

Slide 26

Slide 26 text

New Features in Texdoc 3.0 Conclusions … Please visit our GitHub repository https://github.com/TeX-Live/texdoc … New features of Texdoc 3.0 are: … New option parser … Fuzzy search … If you are interested in the features: 1. Getting them from fuzzy_search branch 2. Reporting bugs on GitHub or using mailing list … Any suggestion to improve Texdoc is welcome … Sending a mail to [email protected] … Creating an issue/pull requests on GitHub Thank you & Happy Texdocing 26 / 26