패키지jwjournal

패키지jwjournal

제목에서 알 수 있듯이 LaTeX를 사용하여 개인 일기를 작성하고 싶습니다. 나는 시간이 지남에 따라 다루기 어려워진 단일 파일에 내 항목을 덤프해 왔습니다. 이상적으로는 일관된 디렉토리 구조를 유지하고 해당 날짜로 항목의 헤드라인을 자동으로 지정하는 데 도움이 되는 패키지(또는 쉘 스크립트 모음)를 찾을 것입니다.

CTAN 저장소에서 관련 항목을 찾지 못했기 때문에 조언을 구하고 있습니다. 쉽게 사용할 수 있는 솔루션이 없으면 앉아서 맞춤형 패키지를 만드는 방법을 배울 수도 있습니다.

매우 감사합니다!

답변1

아직 논평할 수 없으므로 여기에 클래스 tufte-latex와 사용자 정의 환경을 사용하는 제안이 있습니다. 이것은 제가 만든 것입니다. 질문을 편집하여 원하는 형식과 기능을 지정할 수 있습니다. 패키지 lipsum는 일부 더미 텍스트에만 사용됩니다.

\documentclass{tufte-book}
\usepackage{lipsum}

\newenvironment{loggentry}[2]% date, heading
{\noindent\textbf{#2}\marginnote{#1}\\}{\vspace{0.5cm}}

\begin{document}


\begin{loggentry}{2009-Oct-31}{Snow}
    \lipsum[1]
\end{loggentry}

\begin{loggentry}{2010-Dez-31}{Water of Life}
    \lipsum[2]
\end{loggentry}

\begin{loggentry}{2011-Nov-15}{Cold}
    \lipsum[3-5]
\end{loggentry}

\begin{loggentry}{2012-Aug-24}{Sunrise}
    \lipsum[6-7]
\end{loggentry}

\end{document}

여기에 이미지 설명을 입력하세요


편집 1:다음은 자동화된 버전입니다. 이는 귀하의 디렉토리가 /Year/Month/Day.texeg 형식 의 형식이라고 가정 2012/Aug/24.tex하므로 월은 처음 세 글자입니다. 개별 .tex파일에는 첫 번째 줄이 \mytitle{<The actual title here>}.

이 솔루션은 다음을 활용합니다.피터 그릴"에 대한 님의 답변폴더의 파일 이름을 반복하는 방법".

주요 파일:

\documentclass{tufte-book}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{xifthen}

\newenvironment{loggentry}[2]% date, heading
{\noindent\textbf{#2}\marginnote{#1}\par}{\vspace{0.5cm}}

\def\?#1{}

\pgfmathtruncatemacro{\StartYear}{2008}
\pgfmathtruncatemacro{\EndYear}{2012}

\newcommand{\writetitle}{0}
\newcommand{\mytitle}[1]
{   \ifthenelse{\writetitle=1}{#1}{}
}

\newread\mysource

\begin{document}

\foreach \Year in {\StartYear,...,\EndYear}
{   \foreach \Month in {Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}
    {   \foreach \Day in {1,...,31}
        {   \IfFileExists{\Year/\Month/\Day}
                {   \openin\mysource=\Year/\Month/\Day.tex
                    \read\mysource to \firstline
                    \closein\mysource
                    \xdef\writetitle{1}
                    \begin{loggentry}{\Year - \Month - \Day}{\firstline}    
                        \xdef\writetitle{0}
                        \input{\Year/\Month/\Day}
                    \end{loggentry} 
        }
        {   % files does not exist, so nothing to do
        }

        }  
    }
}

\end{document}

샘플 로그 항목 파일:

\mytitle{Something happened}
\lipsum[3-5]

출력:

여기에 이미지 설명을 입력하세요

답변2

나의 새로운 일기 코드는 다음과 같습니다. 측면에 메모가 추가되어 있지만 marginnote패키지를 사용하기 때문에 상자가 없습니다.

환경 파일input.tex

\usepackage[top=4cm, bottom=2cm, outer=5cm, inner=2cm, heightrounded, marginparwidth=3.5cm, marginparsep=0.75cm]{geometry}

\newcommand{\mybox}[1]{%
\marginnote{{\color{red}CAUTION!}\\{#1}}
}

\newlength\sidebar
 \newlength\envrule
 \newlength\envborder
 \setlength\sidebar{1.5mm}
 \setlength\envrule{0.4pt}
 \setlength\envborder{2mm}

\makeatletter
 \long\def\fboxs#1{%
   \leavevmode
   \setbox\@tempboxa\hbox{%
     \color@begingroup
       \kern\fboxsep{#1}\kern\fboxsep
     \color@endgroup}%
   \@frames@x\relax}
 \def\frameboxs{%
   \@ifnextchar(%)
     \@framepicbox{\@ifnextchar[\@frameboxs\fboxs}}
 \def\@frameboxs[#1]{%
   \@ifnextchar[%]
     {\@iframeboxs[#1]}%
     {\@iframeboxs[#1][c]}}
 \long\def\@iframeboxs[#1][#2]#3{%
   \leavevmode
   \@begin@tempboxa\hbox{#3}%
     \setlength\@tempdima{#1}%
     \setbox\@tempboxa\hb@xt@\@tempdima
          {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}%
     \@frames@x{\kern-\fboxrule}%
   \@end@tempboxa}
 \def\@frames@x#1{%
   \@tempdima\fboxrule
   \advance\@tempdima\fboxsep
   \advance\@tempdima\dp\@tempboxa
   \hbox{%
     \lower\@tempdima\hbox{%
       \vbox{%
         %\hrule\@height\fboxrule
         \hbox{%
          \vrule\@width\fboxrule
           #1%
           \vbox{%
             \vskip\fboxsep
             \box\@tempboxa
             \vskip\fboxsep}%
           #1%
           }%\vrule\@width\fboxrule}%
         }%\hrule\@height\fboxrule}%
                           }%
         }%
 }
 \def\esefcolorbox#1#{\esecolor@fbox{#1}}
 \def\esecolor@fbox#1#2#3{%
   \color@b@x{\fboxsep\z@\color#1{#2}\fboxs}{\color#1{#3}}}
 \makeatother


 \definecolor{exampleborder}{HTML}{FE642E}
 \definecolor{examplebg}{HTML}{CEF6EC}
 \definecolor{statementborder}{rgb}{.9,0,0}
 \definecolor{statementbg}{rgb}{1,1,1}

 \newenvironment{eseframed}{%
   \def\FrameCommand{\fboxrule=\the\sidebar  \fboxsep=\the\envborder%
   \esefcolorbox{exampleborder}{examplebg}}%
   \MakeFramed{\FrameRestore}}%
  {\endMakeFramed}

%\renewcommand\dateTurkish{\def\today{\number\day~%
 %\ifcase \month \or Ocak\or Şubat\or Mart\or Nisan\or Mayıs\or Haziran\or
 %  Temmuz\or Ağustos\or Eylül\or Ekim\or Kasım\or Aralık\fi\space
 %\number\year}}
%\dateTurkish

 \newcounter{diary}
%\numberwithin{uygulama}
\renewcommand{\thediary}{\arabic{diary}}

 %%% CODE ENVIRONMENT. PUT TEXT INTO COLORED FRAME %%%
 \newenvironment{diary}[2]
 {\par\medskip\refstepcounter{diary}%
 \hbox{%
 \fboxsep=\the\sidebar\hspace{-\envborder}\hspace{-.5\sidebar}%
 \colorbox{exampleborder}{%
 \hspace{\envborder}\footnotesize\sffamily\bfseries%
 \textcolor{white}{{#1}\ {#2}\enspace\hspace{\envborder}}
%\today
 }
 }
 \nointerlineskip\vspace{-\topsep}%
 \begin{eseframed}\noindent\ignorespaces%
 }
 {\end{eseframed}\vspace{-\baselineskip}\medskip}

일기 파일은 예를 들어 별도의 폴더에 저장되며 2013파일은 해당 폴더에 저장됩니다. 일기 파일의 예 2013.tex:

%2013 Notes
\begin{diary}{Hello!}{07.18.2013}
\mybox{Put some text here for caution.}
 \lipsum[1]
\end{diary}


\begin{diary}{Second entry.}{07.19.2013}
\mybox{Put some text here for caution.}
 \lipsum[2]
\end{diary}

메인 파일

\documentclass[a4paper]{book}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{framed}
\usepackage{datetime}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{marginnote}
\usepackage{tikz}

\input{input}

\title{\Huge My Diary}
\author{Someone}
\date{}
\begin{document}
\maketitle

\include{./2013/2013}
\end{document}

산출

여기에 이미지 설명을 입력하세요

부록

오른쪽 대신 왼쪽의 주황색 사이드바를 사용하기 위해 input.tex파일이 다음과 같이 재정렬되었습니다.

\usepackage[top=4cm, bottom=2cm, outer=5cm, inner=2cm, heightrounded, marginparwidth=3cm, marginparsep=0.75cm]{geometry}

\newcommand{\mybox}[1]{%
\marginnote{{\color{red}CAUTION!}\\{#1}}
}

\newlength\sidebar
 \newlength\envrule
 \newlength\envborder
 \setlength\sidebar{1.5mm}
 \setlength\envrule{0.4pt}
 \setlength\envborder{2mm}

\makeatletter
 \long\def\fboxs#1{%
   \leavevmode
   \setbox\@tempboxa\hbox{%
     \color@begingroup
       \kern\fboxsep{#1}\kern\fboxsep
     \color@endgroup}%
   \@frames@x\relax}
 \def\frameboxs{%
   \@ifnextchar(%)
     \@framepicbox{\@ifnextchar[\@frameboxs\fboxs}}
 \def\@frameboxs[#1]{%
   \@ifnextchar[%]
     {\@iframeboxs[#1]}%
     {\@iframeboxs[#1][c]}}
 \long\def\@iframeboxs[#1][#2]#3{%
   \leavevmode
   \@begin@tempboxa\hbox{#3}%
     \setlength\@tempdima{#1}%
     \setbox\@tempboxa\hb@xt@\@tempdima
          {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}%
     \@frames@x{\kern-\fboxrule}%
   \@end@tempboxa}
 \def\@frames@x#1{%
   \@tempdima\fboxrule
   \advance\@tempdima\fboxsep
   \advance\@tempdima\dp\@tempboxa
   \hbox{%
     \lower\@tempdima\hbox{%
       \vbox{%
        \hrule\@height\fboxrule
       %  \hbox{%
        %  \vrule\@width\fboxrule

           #1%
           \vbox{%
             \vskip\fboxsep
             \box\@tempboxa
             \vskip\fboxsep}%
           #1%
           }\vrule\@width\fboxrule}%
         }%\hrule\@height\fboxrule}%
                          % }%
        % }%
 }
 \def\esefcolorbox#1#{\esecolor@fbox{#1}}
 \def\esecolor@fbox#1#2#3{%
   \color@b@x{\fboxsep\z@\color#1{#2}\fboxs}{\color#1{#3}}}
 \makeatother


 \definecolor{exampleborder}{HTML}{FE642E}
 \definecolor{examplebg}{HTML}{CEF6EC}
 \definecolor{statementborder}{rgb}{.9,0,0}
 \definecolor{statementbg}{rgb}{1,1,1}

 \newenvironment{eseframed}{%
   \def\FrameCommand{\fboxrule=\the\sidebar  \fboxsep=\the\envborder%
   \esefcolorbox{exampleborder}{examplebg}}%
   \MakeFramed{\FrameRestore}}%
  {\endMakeFramed}


 \newcounter{diary}
%\numberwithin{uygulama}
\renewcommand{\thediary}{\arabic{diary}}

 %%% CODE ENVIRONMENT. PUT TEXT INTO COLORED FRAME %%%
 \newenvironment{diary}[2]
 {\par\medskip\refstepcounter{diary}%
 \hbox{%
 \fboxsep=\the\sidebar\hspace{-\envborder}\hspace{-0.5\sidebar}%
 \colorbox{exampleborder}{%
 \hspace{\envborder}\footnotesize\sffamily\bfseries%
 \textcolor{white}{{#1}\ {#2}\enspace\hspace{\envborder}}
%\today
 }
 }
 \nointerlineskip\vspace{-\topsep}%
 \begin{eseframed}\noindent\ignorespaces%
 }
 {\end{eseframed}\vspace{-\baselineskip}\medskip}

그리고 출력은 다음과 같습니다:

여기에 이미지 설명을 입력하세요

답변3

이 답변은 파일 관리 문제를 다루지는 않지만 LaTeX로 일기를 보관하는 새로운 방법을 제공하므로 어쨌든 여기에 게시했습니다.

패키지jwjournal

이제 새로운 문서 클래스가 있습니다.jwjournal일기를 보관하려면 CTAN에서 이용 가능합니다.

주요 원칙은 단순성입니다. 다음과 같은 간단한 순수 텍스트 입력을 바꿀 수 있습니다.

2023-01-01 Sunny --- Botanical Garden

  Today I visited the botanical garden!

  [Food] And had ice-cream for lunch!

다음과 같이 다채로운 일지로:

여기에 이미지 설명을 입력하세요

또는 class 옵션을 color entry켠 상태에서:

여기에 이미지 설명을 입력하세요

mm-dd-yyyy또는 와 같은 다른 날짜 형식에 익숙한 사용자는 dd-mm-yyyy클래스 옵션 month-day-year또는 을 사용 day-month-year하고 평소와 같이 날짜 문자열을 작성할 수 있습니다.

날짜 문자열 /대신 사용해도 괜찮습니다 .-

2023-01-01to 의 변환은 January 1, 2023자동으로 수행되며 이 날짜도 계산됩니다 Sunday( 에 의해 수행된 계산은 projlib-date현재 현대 날짜에 대해서만 작동하지만 여기서는 문제가 되지 않습니다). 이 기능은 다국어를 지원하므로 \UseLanguage{French}서문을 작성하면 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

색상에 관해서는 각 요일에 해당하는 색상이 있으며 물론 원하는 대로 수정할 수 있습니다.

여기에 이미지 설명을 입력하세요

README 파일에 자세한 설명을 적어두었고, 데모문서도 각각 영어, 프랑스어, 중국어로 3개 있습니다.


일일 사용량에 대해

일일 사용량에 대해서는 매월 일지를 별도의 파일로 보관하는 것을 선호하므로 , journal-2023-01.texjournal-2023-02.tex(매일 몇 문장만 작성하기 때문입니다).

물론, 매일의 일기를 별도의 (하위)파일로 작성하여 메인 카탈로그에 입력하는 것도 가능합니다. 이렇게 하면 각 하위 파일이 다음과 같이 깨끗해집니다.

2023-01-01 Weather --- Location

  Some text...

...

그리고 이것이 중요하기 때문에 이미 README에서 언급한 내용을 여기서 반복하겠습니다.

주요 기능은 LaTeX3의 정규식 기능을 통해 달성됩니다. 내용을 단락별로 스캔하고 인식된 패턴을 해당 TeX 명령으로 변환합니다. [...] 그러나 여기에는 대가가 따릅니다. 콘텐츠를 스캔하려면 먼저 매크로에 저장됩니다 \g_jwjournal_content_tl. 즉, \verb본문과 같은 명령을 사용할 수 없습니다.

하지만 꼭 코드를 입력해야 하는 경우에는 \lstinline패키지에서 listings잘 작동하는 것 같습니다.



클래스 이름 및 승인 정보

클래스 이름이 내 이름에서 따온 것이라고 생각할 수도 있습니다.제이~에엥 근데 사실은 내 대학 룸메이트 때문이야제이아이아ei(이 행운의 우연이 이 클래스의 이름을 정하게 된 계기가 되었습니다 jw...). 그는 나에게 LaTeX로 일기를 쓰는 데 도움이 되는 뭔가를 만들자고 제안했고, 현재 구문을 제안했습니다. (또한 그는 날짜가 주어지면 요일을 자동으로 계산해야 한다고 제안했는데, 정말 꽤 오랫동안 고민하게 되었습니다.) 그 분이 없었다면 이 프로젝트는 탄생하지 못했을 것입니다. 그에게 감사의 말씀을 전하고 싶습니다.

답변4

보세요https://ankursinha.in/2016/03/05/calliope-helping-you-keep-a-diary-in-latex.html.

저널 보관을 위해 LaTeX를 쉽게 사용할 수 있게 해주는 간단한 bash 스크립트입니다. 연구 저널을 보관하는 데 가장 유용합니다! 소스코드가 켜져있습니다https://github.com/sanjayankur31/calliope.

관련 정보