Как я могу избежать интерпретации \u
как управляющей последовательности символов?
В моем проекте JavaScript мне нужен строковый литерал некоторых начальных команд LaTeX. Раньше я экранировал каждую обратную косую черту (\\
), но недавно я обнаружил необработанные строки в JavaScript. Было бы здорово, если бы я мог иметь точный строковый литерал в своем исходном коде. К сожалению, теперь есть проблема в \usepackage{indentfirst}
. \u
интерпретируется как escape-последовательность символов, что, конечно, не то, что я имею в виду. Есть ли способ избежать такого поведения, или это просто не место для String.raw
?
Сокращенный код:
var title="title", author="author";
console.log(String.raw`
\documentclass{book}
\title{${title}}
\author{${author}}
\date{}
\usepackage{indentfirst}
\begin{document}
\maketitle{}
\tableofcontents{}
`);
Я заставил это работать, заменив оскорбительную строку на `+"\\usepackage{indentfirst}"+String.raw`
, но, конечно, это не очень понятно.
String.raw
вернет"\\u…"
. Вы получаете ошибку или просто неправильный результат? Какую реализацию ES6 вы используете? - person Bergi   schedule 03.09.2016console.log('\u{2622}')
, вызовет ошибку Неожиданный токен внутри строк шаблона es6. Так что проблематично только\u
, а не\n
или\r
и так далее. - person DavidDomain   schedule 03.09.2016String.raw
не должно. - person Bergi   schedule 03.09.2016console.log(String.raw`Not a newline: \n`)
, это не работаетconsole.log(String.raw`Unicode escape: \u`)
. - person DavidDomain   schedule 03.09.2016String.raw
литералы могут содержать\u
, так что больше нет проблем. Единственное, что теперь считается особенным, это${
- person ShreevatsaR   schedule 14.02.2018