PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kennwörter mit Sonderzeichen



helm
10-04-2024, 10:03
Hallo LaTeX-Eingeweihte,
mit dem folgenden Code kann ich Kennörter im Dokument global aus- und einschalten:


\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{verbatim}
\usepackage{ifthen}
\newcommand{\drucken}{0} % 1: ausgeben, 0: nicht ausgeben
\begin{document}
\phantom{\drucken} % nötig
%
Im Text können dieses Wort
%<%
\ifodd \drucken \begin{verbatim}
#As%|5'&
\end{verbatim}
\else
\texttt{Kennwort}
\fi
%>%
und dieses Wort
%<%
\ifodd \drucken \begin{verbatim}
#$A?%|5"ß
\end{verbatim}
\else
\texttt{Kennwort}
\fi
%>%
via Präambel ein- und ausgeschaltet werden.
\end{document}


Jetzt liegt es nahe, die sechs Zeilen in den %<%...%>%-Bereichen mit einem neuen Befehl, z. B. \newcommand{\schalter}[1]{...} auf z.B. \schalter{#$A?%|5"ß} zu verkürzen. Das gelingt mir aber nicht. Kann mir da bitte jemand auf die Sprünge helfen?

Viele Grüße
Helm

rais
11-04-2024, 21:39
das wird auch schwierig, gelinde gesagt. Dazu ein Auszug aus `texdoc verbatim':


You cannot use the verbatim environment inside user defined commands;

Als Umgebung ginge es etwa so:


\documentclass{article}
\usepackage[ngerman]{babel}
%\usepackage[ansinew]{inputenc}
\usepackage{verbatim}
%\usepackage{ifthen}
\newcommand{\drucken}{1} % 1: ausgeben, 0: nicht ausgeben

\newenvironment{foo}{%
\comment
}{%
\endcomment
\texttt{Kennwort}
}
\ifodd\drucken
\let\foo\verbatim
\let\endfoo\endverbatim
\fi

\begin{document}
\phantom{\drucken} % nötig
%
Im Text können dieses Wort
%<%
\begin{foo}
#As%|5'&
\end{foo}
%>%
und dieses Wort
%<%
\ifodd \drucken \begin{verbatim}
#$A?%|5"ß
\end{verbatim}
\else
\texttt{Kennwort}
\fi
%>%
via Präambel ein- und ausgeschaltet werden.
\end{document}

Dabei wird die foo-Umgebung zunächst als comment-Umgebung definiert (mit "Kennwort" als Ausgabe).
Wenn \drucken ungerade ist, wird die foo-Umgebung auf verbatim umgeleitet.

Gruß

klops
12-04-2024, 08:36
Ich habe gerade nicht viel Zeit. Schau dir aber mal die aktuelle Version des usrguide.pdf an. Darin ist erklärt, wie man mit \NewDocumentCommand auch Befehle mit verbatim-Argument vergleichbar zu \verb|…| bzw. \verb{…} definieren kann.

Die Verwendung von ansinew als Codierung ist übrigens total veraltet. Alle halbwegs aktuellen LaTeX-Editoren verwenden unabhängig vom OS in der Voreinstellung utf8. Mit LaTeX braucht man dann unabhängig von der Engine schon seit vielen Jahren kein inputenc mehr.

Daneben könnten für dich allgemein Pakete für bedingten Satz interessant sein: → https://ctan.org/topic/cond-comp

rais
13-04-2024, 00:38
Danke für die Hinweise,
da ziehe ich erstmal meine Aussage zurück und behaupte das Gegenteil :)


\documentclass{article}
\usepackage[ngerman]{babel}

\newcommand{\drucken}{0} % 1: ausgeben, 0: nicht ausgeben

\NewDocumentCommand{\foo}{v}{%
\texttt{%
\ifodd\drucken
#1%
\else
Kennwort%
\fi
}%
}

\begin{document}
%
Im Text können dieses Wort
%<%
\foo!#As%|5'&!
%>%
und dieses Wort
%<%
\foo{#$A?%|5"ß}
%>%
via Präambel ein- und ausgeschaltet werden.
\end{document}

Die Bedingung/Verzweigung hab ich erstmal so gelassen Die Auswertung ist ja jetzt zentral und kann einfach angepasst werden.

Gruß