Используйте пользовательские разделители в текущем шаблоне Twig

Я использую Twig для создания документов LaTeX. Синтаксис разделителя синтаксиса по умолчанию Twig плохо связан с фигурными скобками LaTeX. Простое ускорение LaTeX не является вариантом, поскольку он делает код совершенно нечитаемым. Я знаю, что могу определять пользовательские разделители по всему миру , но я не хочу переписывать все мои HTML-шаблоны для использования нового синтаксиса.

Я также знаю о дословных разделах, но они делают код действительно уродливым:

\ihead{ {% endverbatim %} {{ title }} {% verbatim %} } 

Есть ли способ изменить синтаксис только для текущего шаблона или набора шаблонов , например:

 {% set_delimiters({ 'tag_comment' : ['<%#', '%>'], 'tag_block' : ['<%' , '%>'], 'tag_variable' : ['<%=', '%>'], 'interpolation': ['#<' , '>'] }) %} 

Как вы можете видеть, не рекомендуется использовать эту функцию. Настройка синтаксиса

Кстати, вот быстрый и простой пример, чтобы объяснить, как использовать пользовательские разделители в symfony:

service.yml

 services: templating_lexer: public: true parent: templating.engine.twig class: Acme\YourBundle\Twig\TwigLexerEngine 

TwigLexerEngine

 namespace Acme\YourBundle\Twig; use Symfony\Bundle\TwigBundle\TwigEngine; class TwigLexerEngine extends TwigEngine { public function setTwigLexer($lexer) { $this->environment->setLexer($lexer); return $this; } } для namespace Acme\YourBundle\Twig; use Symfony\Bundle\TwigBundle\TwigEngine; class TwigLexerEngine extends TwigEngine { public function setTwigLexer($lexer) { $this->environment->setLexer($lexer); return $this; } } 

Ваш контроллер

 public function yourAction() { $lexer = new \Twig_Lexer($this->get('twig'), array( 'tag_comment' => array('{*', '*}'), 'tag_block' => array('{', '}'), 'tag_variable' => array('{$', '}'), )); $templating = $this->get('templating_lexer'); $templating->setTwigLexer($lexer); return $templating->renderResponse('YourBundle::template.html.twig'); }