/** * Заменяет TeX-макросы в тексе на те, которые будут заменены на картинки: * Block: $$...$$ -> \[...\] * Inline: \{...\} -> \(...\) */ private static function replaceMacrosToImaged($TeX) { $TeX = str_replace('\\{', '\\(', $TeX); $TeX = str_replace('\\}', '\\)', $TeX); $TeX = PsStrings::pregReplaceCyclic('/\\$\\$/', $TeX, array('\\[', '\\]')); return $TeX; }
/** * @covers PsStrings::pregReplaceCyclic */ public function testPregReplaceCyclic() { $text = 'axbxcxdxe'; $this->assertEquals(PsStrings::pregReplaceCyclic('/x/', $text, array(1, 2)), 'a1b2c1d2e'); $this->assertEquals(PsStrings::pregReplaceCyclic('/x/', $text, array(1, 2, 3)), 'a1b2c3d1e'); $this->assertEquals(PsStrings::pregReplaceCyclic('/x/', $text, array(1, 2, 3, 4)), 'a1b2c3d4e'); }
public function preCompile($source) { $source = str_replace('\\(', '{literal}\\(', $source); $source = str_replace('\\)', '\\){/literal}', $source); $source = str_replace('\\{', '{literal}\\{', $source); $source = str_replace('\\}', '\\}{/literal}', $source); $source = str_replace('\\[', '{literal}\\[', $source); $source = str_replace('\\]', '\\]{/literal}', $source); $source = PsStrings::pregReplaceCyclic('/\\$\\$/', $source, array('{literal}$$', '$${/literal}')); //Обернём математический текст, например: α перейдёт в <span class="math_text">α</span> $source = TextFormulesProcessor::replaceMathText($source); //Заменим некоторые блоки на вызов методов данного класса $source = SmartyReplacesIf::preCompile($source); return $source; }