Kann man im Dokument Abfragen ob ein Input aktiv ist ?

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: Kann man im Dokument Abfragen ob ein Input aktiv ist ?

von Gast » Mo 9. Jan 2017, 10:00

Wenn das Ziel ist, eine dieser unsäglichen Vorlagen zu erstellen, kann ich Johannes nur beipflichten. Das endet nämlich früher oder später (erfahrungsgemäß eher früher) garantiert wieder in viel Arbeit für uns und viel Frust für die Anwender.

Ansonsten sei eine Möglichkeit über die Dateiliste, die LaTeX anlegt, gezeigt:
\documentclass{article}

\makeatletter
\AtBeginDocument{%
  % Wenn \listfiles nicht verwendet wird, ist \@listfiles nicht definiert und
  % üblicherweise zerstört dann LaTeX die Befehle \@filelist und
  % \@addtofilelist innerhalb von \begin{document}. Das kann man einfach
  % verhindern, indem man \@listfiles zumindest auf \relax setzt.
  \ifx\@listfiles\@undefined\let\@listfiles\relax\fi
  % Besser wäre vermutlich, an dieser Stelle \listfiles aufzurufen,
  % schließlich schadet die Liste in der log-Datei nicht, sondern nützt
  % bei weiteren Fragen sogar.
}
\newcommand*\IfFileInList[2]{%
  % Testen, ob #1 in der Liste #2 enthalten ist und dann entweder das nächste
  % oder übernächste Argument verarbeiten.
  \protected@edef\reserved@a{\noexpand\in@{#1}{#2}}\reserved@a
  \ifin@
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\newcommand*\IfInFileList[1]{%
  % \IfFileInList auf den Dateinamen aus Argument 1 und die LaTeX-Dateiliste
  % anwenden.
  \IfFileInList{#1}{\@filelist}%
}
\makeatother

\begin{filecontents}{\jobname-1.tex}
\section{\jobname 1}
\blindtext
\end{filecontents}

\usepackage{blindtext}

\begin{document}

\input{\jobname-1.tex}

\blinddocument

\section{Test}

\texttt{article.cls} wurde \IfInFileList{article.cls}{}{nicht }geladen.

\texttt{blindtext.sty} wurde \IfInFileList{blindtext.sty}{}{nicht }geladen.

\texttt{\jobname-1.tex} wurde \IfInFileList{\jobname-1.tex}{}{nicht }geladen.

\texttt{\jobname-2.tex} wurde \IfInFileList{\jobname-2.tex}{}{nicht }geladen.
\end{document}
Wer obigen Code nicht versteht oder keine Ahnung hat, welche Konsequenzen der Trick mit \AtBeginDocument haben könnte, sollte die Finger davon lassen!

von Johannes_B » Mo 9. Jan 2017, 09:22

Bitte erstell keine Vorlage für andere.

von Forum ;-) » Mo 9. Jan 2017, 09:14

Wenn du irgendwo einstellst, welche Dateien geladen werden und welche nicht, kannst du dort dann nicht einfach auch gleich eine Abfragemöglichkeit mit einbauen? Oder suchst du am Ende \@ifpackageloaded aus dem LaTeX-Kern? Bitte halte dich bei Fragen an die wichtigen Hinweise und mach ein aussagekräftiges Minimalbeispiel. Dann können wir uns unzählige Rückfragen sparen und du kommst am Ende meist schneller und frustfreier zu einer Lösung.

von Stefan Kottwitz » Mo 9. Jan 2017, 09:13

Hallo Martin!

Wenn diese Text-Anzeige nur einmalig entschieden wird, reicht es ja, wenn Du ein Makro für den Text definierst. Im Header definierst Du es als leeres Makro mit \newcommand{\meintext}{} und in der Datei, die Du mit \input liest, redefinierst Du es mit \renewcommand für den eigentlichen Text. Später verwendest Du das Makro. So wird der Text nur angezeigt, wenn die Datei geladen wird, sonst er leer.

Ansonsten geht es natürlich auch anders, etwa mit "if". Wie, erst in der Präambel:

\newif\iftext
\textfalse

In der externen Datei:

\texttrue

Später entscheidest Du mit

\iftext
% ist eingebunden, wird angezeigt
\else
% ist nicht eingebunden, wird nicht angezeigt
\fi

[d]etoolbox[/d] bietet eine Alternative mit \newtoggle.

Stefan

von Martin.r » Mo 9. Jan 2017, 09:12

Aktiv wäre bei mir:

\input { }


und nicht aktiv mit:

%\input{}

von Gast » Mo 9. Jan 2017, 09:09

Was verstehst du unter einem aktiven Input oder einem aktiven Dokument?

Hilft dir vielleicht \BeforeFile oder \AfterFile von scrlfile weiter.

Kann man im Dokument Abfragen ob ein Input aktiv ist ?

von Martin.r » Mo 9. Jan 2017, 09:05

Hallo Forum,

Ich bin so ziemlich neu in der Latex Welt, und bräuchte Hilfe.

Ich habe eine Header Datei erstellt wo alle Includes und Inputs eingestellt werden können.

meine Frage wäre jetzt ob es jetzt die Möglichkeit gibt ob ich in einem Dokument abfragen kann ob ein anderes Dokument (/input{}) aktiv ist, so dass dann ein Text angezeigt wird. Und wenn ich das /input{} wieder deaktiviere das der Text nicht mehr angezeigt wird.

Ich hoffe ihr könnt mir helfen :)

Mit freundlichen Grüßen

Martin


Martin

Nach oben