diff --git a/bibtexbrowser-test.php b/bibtexbrowser-test.php index 6f3cdd7..71f4575 100755 --- a/bibtexbrowser-test.php +++ b/bibtexbrowser-test.php @@ -224,6 +224,27 @@ class BTBTest extends PHPUnit_Framework_TestCase { $this->assertEquals("@article{aKey,\n title = {A Book},\n author = {Martin Monperrus},\n publisher = {Springer},\n year = {2009},\n}\n", $dis->getText()); } + function test_BIBTEXBROWSER_USE_LATEX2HTML() { + $bibtex = "@article{aKey,title={\`a Book},author={Martin Monperrus},publisher={Springer},year=2009,pages={42--4242},number=1}\n"; + + bibtexbrowser_configure('BIBTEXBROWSER_USE_LATEX2HTML', true); + $test_data = fopen('php://memory','x+'); + fwrite($test_data, $bibtex); + fseek($test_data,0); + $db = new BibDataBase(); + $db->update_internal("inline", $test_data); + $dis = $db->getEntryByKey('aKey'); + $this->assertEquals("à Book",$dis->getTitle()); + + bibtexbrowser_configure('BIBTEXBROWSER_USE_LATEX2HTML', false); + $test_data = fopen('php://memory','x+'); + fwrite($test_data, $bibtex); + fseek($test_data,0); + $db = new BibDataBase(); + $db->update_internal("inline", $test_data); + $dis = $db->getEntryByKey('aKey'); + $this->assertEquals("\`a Book",$dis->getTitle()); + } } // end class diff --git a/bibtexbrowser.php b/bibtexbrowser.php index f5c32dc..2d0fa8b 100755 --- a/bibtexbrowser.php +++ b/bibtexbrowser.php @@ -149,6 +149,8 @@ if (defined('ENCODING')) { // a list of fields that will not be shown in the bibtex view if BIBTEXBROWSER_BIBTEX_VIEW=reconstructed @define('BIBTEXBROWSER_BIBTEX_VIEW_FILTEREDOUT','comment|note|file'); +// should Latex macros be executed (e.g. \'e -> é +@define('BIBTEXBROWSER_USE_LATEX2HTML',true); // Which is the first html level that should be used in embedded mode? @define('BIBTEXBROWSER_HTMLHEADINGLEVEL', 2); @@ -1118,17 +1120,20 @@ class BibEntry { // 1. trim space $value = xtrim($value); - // 2. transform Latex markup to HTML entities (easier than a one to one mapping to each character) - // HTML entity is an intermediate format - $value = latex2html($value); + if (c('BIBTEXBROWSER_USE_LATEX2HTML')) { + // 2. transform Latex markup to HTML entities (easier than a one to one mapping to each character) + // HTML entity is an intermediate format + $value = latex2html($value); + + // 3. transform to the target output encoding + $value = html_entity_decode($value, ENT_QUOTES|ENT_XHTML, OUTPUT_ENCODING); + } - // 3. transform existing encoded character in the new format + // 4. transform existing encoded character in the new format if (function_exists('mb_convert_encoding') && OUTPUT_ENCODING != BIBTEX_INPUT_ENCODING) { $vaue = mb_convert_encoding($value, OUTPUT_ENCODING, BIBTEX_INPUT_ENCODING); } - // 4. transform to the target output encoding - $value = html_entity_decode($value, ENT_QUOTES|ENT_XHTML, OUTPUT_ENCODING); } else { //echo "xx".$value."xx\n"; }