Wie kann ich die Loop bzw das Macro (s.u.) so ändern, dass auch \textbackslash etc verwendet werden können?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Wie kann ich die Loop bzw das Macro (s.u.) so ändern, dass auch \textbackslash etc verwendet werden können?

Re: Wie kann ich die Loop bzw das Macro (s.u.) so ändern, dass auch \textbackslash etc verwendet werden können?

von knbg » Mo 18. Mai 2020, 07:58

Vielen Dank, das funktioniert!

(Bei meinem MiKTeX musst ich noch expl3 und textcomp laden)

Re: Wie kann ich die Loop bzw das Macro (s.u.) so ändern, dass auch \textbackslash etc verwendet werden können?

von u_fischer » Sa 16. Mai 2020, 18:41

sowas könnte gehen (in texlive 2020, in älteren Systemen musst du expl3 laden).
Die url sollte nicht gerade mit einem Befehl anfangen, und Umlaute usw muss man mit Klammern schützen.

\documentclass{article}
\usepackage{xcolor}

\newsavebox\MyArrowBox%
\sbox\MyArrowBox{$\hookleftarrow$}%

\ExplSyntaxOn

\newcommand{\AddBreakableChars}[1]{%
 \tl_set:No \l_tmpa_tl {#1}
 \tl_replace_all:Nnn \l_tmpa_tl { ~ } { \nobreakspace } 
 \seq_set_split:NnV \l_tmpa_seq {}\l_tmpa_tl
 \seq_use:Nn\l_tmpa_seq {\discretionary{\usebox\MyArrowBox}{}{}}
}

\ExplSyntaxOff
\newcommand*{\MyUrl}{https://tex.stack\textbackslash exchange.com/\textasciigrave questions/28835/opt ion-to- break-urls-with-carriage-return-symbol}%

\begin{document}
\parbox{2cm}{\textcolor{blue}{\AddBreakableChars{abcdefghet idass gr{ü}{ß}e}}}

\parbox{4cm}{\textcolor{blue}{\AddBreakableChars{\MyUrl}}}

\bigskip
\parbox{7cm}{\textcolor{blue}{\AddBreakableChars{\MyUrl}}}
\end{document}

Wie kann ich die Loop bzw das Macro (s.u.) so ändern, dass auch \textbackslash etc verwendet werden können?

von knbg » Fr 15. Mai 2020, 16:56

ZZ beschäftigt mich das Problem, wie Code-Schnipsel (oder Pfade etc) in \texttt{...} getrennt werden können. Eine Trennung an beliebiger Stelle wäre ok.

Folgendes habe ich hier hier gefunden:

\documentclass{article}
\usepackage{hyphenat}
\usepackage{url}
\usepackage{xstring}
\usepackage{forloop}
\usepackage{xcolor}
%\usepackage{filecontents}

\newsavebox\MyArrowBox%
\sbox\MyArrowBox{$\hookleftarrow$}%
\makeatletter%
\newcommand*{\BreakableChar}{%
  \leavevmode%
  \prw@zbreak%
  \discretionary{\usebox\MyArrowBox}{}{}%
  \prw@zbreak%
}%

\newcounter{index}%
\newcommand{\AddBreakableChars}[1]{%
  \StrLen{#1 }[\stringLength]%
  \forloop[1]{index}{1}{\value{index}<\stringLength}{%
    \StrChar{#1}{\value{index}}[\currentLetter]%
    {\currentLetter\BreakableChar}%
  }%
}%

\newcommand*{\MyUrl}{https://tex.stackexchange.com/questions/28835/option-to-break-urls-with-carriage-return-symbol}%

\begin{document}
\parbox{4cm}{\textcolor{blue}{\AddBreakableChars{\MyUrl}}}

\bigskip
\parbox{7cm}{\textcolor{blue}{\AddBreakableChars{\MyUrl}}}
\end{document}

Das funktioniert durchaus und sieht gut aus. Nun wollte ich mir daraus ein neues texttt erstellen, also insbesondere sollte der Text zB auch \textbackslash und den Backtick, dh\textasciigrave aus dem textcomp Paket, (und Spaces) enthalten können. Wenn ich aber zB sowas mache:

\AddBreakableChars{Foo\textbackslash{}Bar}

dann erfolgt ein Abbruch mit Fehlermeldung. Es gibt auch einen Kommentar auf der verlinkten Seiten, dass man in \AddBreakableChars über Tokens statt über Zeichen iterieren müsse, aber leider steht keine Lösung dabei.

Da ich von LaTeX-Makroprogrammmierung nicht viel verstehe, wollte ich nachfragen, ob mir hier jemand helfen kann.
Der Thread auf tex.stackexchange ist über 8 Jahre alt, es scheint mir daher nicht sinnvoll, dort nachzufragen.

Ich habe Alternativlösungen gefunden, die auf url basieren, aber die verschlucken immer die Spaces, außerdem wird der Backtick nicht korrekt dargestellt.

Mein LaTeX-Code wird übrigens per Pandoc aus Markdown generiert, sodass man evt auch was mit pandoc-Filtern machen könnte, aber eine LaTeX-Lösung wäre mir lieber.


Nach oben