Wie kann ich ein Seitenlayout mit umrahmten Boxen erstellen?

Wie kann ich ein Seitenlayout mit umrahmten Boxen erstellen?

Für einen Bericht, den ich schreibe, habe ich eine MS Word-Vorlage für eine Seite, die eingefügt werden muss. Die Seite sieht folgendermaßen aus (Bildschirmausdruck aus Word):

Ein Screenshot des Word-Dokuments

Es gibt jedoch ein paar Dinge, die mich davon abhalten, diese Vorlage in ihrer aktuellen Form zu verwenden, sondern sie in LaTeX neu zu schreiben:

  1. Diese Seite ist in Word, während der Rest meines Berichts in LaTeX ist. Daher sind die Stile unterschiedlich, was beispielsweise Schriftarten und Linienbreiten betrifft.
  2. Word konvertiert im PDF-Format gespeicherte Vektorbilder beim Einfügen in Rasterbilder mit niedriger Auflösung (und ja, es ist immer noch gerastert, nachdem Sie es als PDF-Datei gedruckt haben).

Aber genug der Argumente für die Verwendung von LaTeX und nun zur Frage:Wie erreiche ich dieses Layout mit LaTeX?? Im Moment muss ich nur wissen, wie man diese Art von Kästchen erstellt, die in diesem Muster direkt nebeneinander existieren, und wie man den Text innerhalb der Kästchen richtig anpasst.

Bearbeiten:Es wäre schön, wenn die Abmessungen der Boxen unabhängig vom Inhalt wären. Auf diese Weise bliebe das Layout für verschiedene Personen gleich, die dieselbe LaTeX-Vorlage verwenden. Meine Abteilung an der Universität wird es vielleicht als offizielle Alternative zur Word-Vorlage verwenden.

Antwort1

Ich mache das in meinen Berichten. Zuerst benötigen Sie das Setup in Ihrer Klassen- oder Stildatei. In meinem Fall ist es unsere Berichtsklasse und sie enthält die folgenden Definitionen für das Ausfüllen eines staatlichen SF-298-Formulars:

\newenvironment{createSFtwoNINEeight}{
  \clearpage
  \begin{singlespace}
    \begin{picture}(612,650)(70,82)
      \includegraphics{SF298}
      \footnotesize
      \@SFitemONE{\@pubdate}
      \@SFitemTWO{Final}
      \@SFitemEIGHT{\@arlrptno}
      \@SFitemTWELVE{\@distribution}
      \def\SFitemSIXTEENaVALUE{Unclassified}
      \def\SFitemSIXTEENbVALUE{Unclassified}
      \def\SFitemSIXTEENcVALUE{Unclassified}
}{
      \put(-564,100){\parbox[c]{0.8in}{\centering
          \SFitemSIXTEENaVALUE}}
      \put(-493,100){\parbox[c]{0.8in}{\centering
          \SFitemSIXTEENbVALUE}}
      \put(-422,100){\parbox[c]{0.8in}{\centering
          \SFitemSIXTEENcVALUE}}
      \normalsize
    \end{picture}
  \end{singlespace}
}
\newcommand\@SFitemONE[1]{\put(-564,662){#1}}
\newcommand\@SFitemTWO[1]{\put(-424,662){#1}}
\newcommand\SFitemTHREE[1]{\put(-217,662){#1}}
\newcommand\SFitemFOUR[1]{\put(-564,636){\parbox[t]{4.65in}{\raggedright#1}}}
\newcommand\SFitemFIVEa[1]{\put(-217,636){#1}}
\newcommand\SFitemFIVEd[1]{\put(-217,569){#1}}
\newcommand\SFitemSIX[1]{\put(-564,569){\parbox[t]{4.65in}{#1}}}
\newcommand\SFitemSEVEN[1]{\put(-564,485){\parbox[c]{4.65in}{\raggedright#1}}}
\newcommand\@SFitemEIGHT[1]{\put(-217,485){#1}}
\newcommand\SFitemNINE[1]{\put(-564,432){\parbox[c]{4.65in}{\raggedright#1}}}
\newcommand\SFitemTEN[1]{\put(-217,445){#1}}
\newcommand\SFitemELEVEN[1]{\put(-217,412){#1}}
\newcommand\@SFitemTWELVE[1]
  {\put(-564,381){\parbox[c]{7.15in}{\setstretch{0.9}#1}}}
\newcommand\SFitemTHIRTEEN[1]{\put(-564,350){\parbox[t]{7.1in}{\raggedright#1}}}
\newcommand\SFitemFOURTEEN[1]{\put(-564,310){\parbox[t]{7.1in}{\raggedright#1}}}
\newcommand\SFitemFIFTEEN[1]{\put(-564,148){\parbox[b]{7.1in}{\raggedright#1}}}
\newcommand\SFitemSIXTEENa[1]{\def\SFitemSIXTEENaVALUE{#1}}
\newcommand\SFitemSIXTEENb[1]{\def\SFitemSIXTEENbVALUE{#1}}
\newcommand\SFitemSIXTEENc[1]{\def\SFitemSIXTEENcVALUE{#1}}
\newcommand\SFitemSEVENTEEN[1]{
  \put(-352,108){\parbox[c]{0.8in}{\centering#1}}
}
\newcommand\SFitemEIGHTEEN[1]{\put(-285,108){\parbox[c]{0.8in}{\centering#1}}}
\newcommand\SFitemNINETEENa[1]{\put(-217,124){#1}}
\newcommand\SFitemNINETEENb[1]{\put(-217,100){#1}}

Wie Sie sehen, wird die native Bildumgebung von LaTeX verwendet, in der Ihr Text über ein leeres Formular gelegt wird (das leere Formular wird als Grafik importiert). In Ihrem Dokument müssen Sie dann die Umgebung aufrufen, um das Bild zu zeichnen:

%% OPTION I: CREATE YOUR OWN SF298 in LaTeX:
\begin{createSFtwoNINEeight}
% SFitemONE AUTOMATICALLY FILLED IN (\pubdate)
% SFitemTWO AUTOMATICALLY FILLED IN (Final)
  \SFitemTHREE{January 2011-October 2011}
  \SFitemFOUR{Frontiers in Anisotropic Shock-Wave Modeling}
  \SFitemFIVEd{AH80}
  \SFitemSIX{Alexander A. Lukyanov\\Steven B. Segletes}
  \SFitemSEVEN{Abingdon [EDITED OUT]}
% SFitemEIGHT AUTOMATICALLY FILLED IN (\arlrptno)
%  \SFitemNINE{As needed...}
% SFitemTWELVE AUTOMATICALLY FILLED IN (\distribution)
  \SFitemTHIRTEEN{[EDITED OUT].}
  \SFitemFOURTEEN{
Studies of anisotropic materials and the discovery of various novel and
unexpected phenomena under shock loading has contributed significantly
to our understanding of the behavior of condensed matter. The variety of
experimental studies for isotropic materials displays systematic
patterns, giving basic insights into the underlying physics of
anisotropic shock-wave modeling. There are many similarities and
significant differences in the phenomena observed for isotropic and
anisotropic materials under shock-wave loading. Despite this, the
anisotropic constitutive equations must represent, mathematically and
physically, the generalization of the conventional constitutive equations for
isotropic material and reduce to the conventional constitutive equations
in the limit of isotropy. This report presents the current state of the
art in the experimental and theoretical developments of this fascinating
field.
  }
  \SFitemFIFTEEN{anisotropic material, anisotropic 
plasticity, shock waves, equation of state, stress decomposition}
% \SFitemSIXTEENa defaults to UNCLASSSIFIED
% \SFitemSIXTEENb defaults to UNCLASSSIFIED
% \SFitemSIXTEENc defaults to UNCLASSSIFIED
  \SFitemSEVENTEEN{UU}
  \SFitemEIGHTEEN{72}%  = FRONT MATTER PP. + REPORT PP. + 2
  \SFitemNINETEENa{Steven B. Segletes}
  \SFitemNINETEENb{[EDITED OUT]}
\end{createSFtwoNINEeight}

Das Nettoergebnis ist

Bildbeschreibung hier eingeben


Als Antwort auf die Bitte um ein in sich geschlossenes Beispiel habe ich das Bild des Fragestellers oben auf dieser Seite genommen und gespeichert (als form.png). Anschließend habe ich diesen verkürzten Ausschnitt geschrieben

\documentclass{article}
\usepackage{graphicx}
\usepackage{setspace}
\newenvironment{myForm}{
  \clearpage
  \begin{singlespace}
    \begin{picture}(600,500)(70,82)
      \includegraphics[height=9in]{form}
      \footnotesize
      \SFitemONE{\pubdate}
      \SFitemEIGHT{\rptno}
}{
      \normalsize
    \end{picture}
  \end{singlespace}
}
\newcommand\SFitemONE[1]{\put(-138,585){#1}}
\newcommand\SFitemEIGHT[1]{\put(-410,500){\textbf{#1}}}
\newcommand\SFitemSEVENTEEN[1]{
  \put(-400,270){\parbox[c]{4.8in}{#1}}
}
\begin{document}
\def\pubdate{\today}
\def\rptno{xyz-123}
\begin{myForm}
\SFitemSEVENTEEN{This is the extended text  This is the extended text  
This is the extended text  This is the extended text  This is the 
extended text  This is the extended text  This is the extended text  }
\end{myForm}
\end{document}

Das Ergebnis ist wie folgt, wobei dem Formular des Benutzers eine Berichtsnummer, ein Datum und ein erweiterter Textabschnitt hinzugefügt wurden. In diesem Beispiel verwende ich sowohl die Umgebung zum Hinzufügen von Daten ( \SFitemSEVENTEEN) als auch die Verwendung zuvor definierter Daten ( \pubdateund \rptno) innerhalb des Formulars

Bildbeschreibung hier eingeben

Antwort2

Nur ein paar Tipps,

  1. Verwenden Sie minipageseine Schlüssel-Wert-Schnittstelle zur Dateneingabe. Wenn Sie 10 Minuten Zeit haben, um ein Formular für einen verspäteten Bericht auszufüllen, der in einer Lawine von LaTeX-Befehlen verloren geht, ist die Dateneingabe verwirrend und fehleranfällig. Stellen Sie sich vor, minipagesSie divskennen htmldasselbe Konzept.
  2. Machen Sie sich mit ihnen vertraut minipages. Sie müssen die Befehle in voller Form verwenden, also die äußere und innere Ausrichtung berücksichtigen sowie die Höhe der Box angeben.
  3. Verwenden Sie fboxdiese Regeln beim Prototyping. Möglicherweise möchten Sie sie aber auch in der endgültigen Version verwenden.
  4. Planen Sie mindestens 1–2 Stunden ein, um eine Form perfekt zu machen. TikZ kann auch Ihr Freund sein, wenn Sie damit vertraut sind. Falls jemand nach abgerundeten Ecken fragt.

Normalerweise verwende ich es PGFfür Schlüssel. Hier ist ein MWE

\documentclass{article}
\usepackage{pgf}
\newcommand\setform{\pgfqkeys{/form }}
\setform{field1/.store in=\fieldi,
  field2/.store in=\fieldii,
}


\begin{document}

\newcommand\myform{%
\fboxrule=0.4pt
\fbox{\begin{minipage}{\textwidth}
\fbox{\begin{minipage}[t][3cm][t]{0.25\textwidth}
  \textbf{Name} \fieldi
\end{minipage}}%
\fbox{\begin{minipage}[t][3cm][t]{0.4\textwidth}
  \textbf{Subject} \fieldii
\end{minipage}}
\fbox{\begin{minipage}[t][3cm][t]{0.25\textwidth}
test
\end{minipage}}
\end{minipage}}
}

\setform{field1 = G. Wales,
         field2 = Mathematics}
\myform

\end{document}

Antwort3

Verwenden Sie tabledie Umgebung mit einer Kombination aus minipageUmgebungen in Spalten und Sie erhalten sie. Sie müssen Pakete berücksichtigen, multicolumnum multirowdieses Format zu ermöglichen.

Eine andere Lösung besteht darin, zu überprüfenAbonnierenfür LaTeX-Poster. Es ist optimal für die Erstellung solch seltsamer Layouts. Erstellen Sie damit ein PDF und fügen Sie es in Ihr LaTeX-Dokument ein.

Antwort4

Die Verwendung schwebender Elemente oder Miniseiten hat den Nachteil, dass Latex das Layout immer noch verändern kann. Das ist normalerweise gut, aber nicht bei Formularen, die exakte Abmessungen einhalten müssen.

ich benutzePGF/TikzDamit können Sie alles genau dort auf einer Seite platzieren, wo Sie es haben möchten.

Obwohl es sich um eine Art rohe Gewalt handelt (ich will !das! genau !da!), erstellt es genau das Layout, das Sie brauchen. Latex-Stile bleiben vollständig erhalten und alle Makros sind zugänglich.

Die Optionen für Knoten sind unendlich, daher habe ich hier nur die grundlegendsten hinzugefügt. Das Einfügen von Grafiken ist ebenso einfach.

\documentclass[a4paper]{article}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
    \begin{tikzpicture}[remember picture, overlay]
    \node at (current page.south west){%
         \begin{tikzpicture}[remember picture, overlay]
            \draw (25mm,250mm) node [draw, anchor = south west, text width = 10 cm, minimum height = 3 cm]
           {Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
reprehenderit in voluptate velit esse cillum } ;
            \draw (135mm,250mm) node [draw, anchor = south west, text width = 3 cm, minimum height = 3 cm] {};
       \end{tikzpicture}
    };
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen