2016-09-03 4 views
2

Wie kann ich vermeiden, dass \u als Zeichen-Escape-Sequenz interpretiert wird? u in JavaScript String.raw`template literal`

In meinem JavaScript-Projekt brauche ich ein String-Literal einiger LaTeX-Befehle. Bevor mir jeder Backslash entgangen ist (\\), habe ich vor kurzem rohe Zeichenketten in JavaScript entdeckt. Es wäre toll, wenn ich die genaue String-Literal in meiner Quelle haben könnte. Leider gibt es jetzt ein Problem in \usepackage{indentfirst}. Die \u wird als Zeichen-Escape-Sequenz interpretiert, was natürlich nicht meine Absicht ist. Gibt es eine Möglichkeit, dieses Verhalten zu vermeiden, oder ist das einfach nicht der richtige Ort für String.raw?

Verkürzter Code:

var title="title", author="author"; 

console.log(String.raw` 
\documentclass{book} 

\title{${title}} 
\author{${author}} 
\date{} 

\usepackage{indentfirst} 

\begin{document} 
\maketitle{} 
\tableofcontents{} 
`); 

habe ich dies mit `+"\\usepackage{indentfirst}"+String.raw` durch Ersetzen der Codezeile zu arbeiten, aber das ist natürlich nicht sehr klar.

+0

Hm, 'String.raw' wird erwartet,' '\\ u ...' 'zurückzugeben. Erhalten Sie einen Fehler oder nur das falsche Ergebnis? Welche ES6-Implementierung verwenden Sie? – Bergi

+0

@Bergi - Hatte den gleichen Vorschlag, aber es sieht aus wie die neue es6 Unicode-Escape, die Sie tun können, wie 'console.log ('\ u {2622}')' wird einen Fehler * Unexpected token * in es6 Template-Strings werfen . Also ist nur das '\ 'problematisch, nicht' \ n' oder '\ r' und so weiter. – DavidDomain

+0

@DavidDomain Verwenden Sie es als String möglicherweise werfen, aber mit getaggt mit 'String.raw' sollte es nicht. – Bergi

Antwort

2

Sie können die \u Syntax nutzen, indem Sie die Zeile durch \u005Cusepackage{indentfirst} ersetzen, oder auch nur \x5Cusepackage{indentfirst}.

5C entspricht \.

Eine andere Option könnte die Verwendung der Dollarzeichen- und geschweiften Klammernotation für Ausdrücke sein. ${'\\'}usepackage{indentfirst}

Verwandte Themen