将“tikzpicture”放在文本左侧

将“tikzpicture”放在文本左侧

背景

我想为罗马天主教圣周礼拜仪式(从圣咏主日到复活节主日)编写一份 LuaLaTeX 文档。我用斯洛伐克语编写(这里'使用图像作为包含任何类型图形(如分数或十字架)部分的 PDF;这里该文件的英文版本)

我用复活节蜡烛制作了十字架(斯洛伐克语版本:第 3 页;英语版本:第 4 页),但是我无法将其放在随附文本的左侧。我使用 做到了这一点tikzpicture

我尝试过的

我尝试使用multicols,但是这个包不支持tikzpicture在列中。

然后我发现问题,所以我尝试使用wrapfigure,但我无法让它工作。

问题定义

当我使用 时wrapfigure,应该位于十字左边的文本会左对齐,就好像tikzpicture不存在一样。

此外,十字应左对齐(至页面左边距)并至顶部边距。

文本的第一行应该移动到顶部边缘,以使字母 alpha 的顶部与文本第一行的顶部对齐。

此外,如果十字和文本应该在页面上向下移动(因为之前的文本将与十字及其文本在同一页面上结束),则十字和其文本应该根据需要向下移动,而 alpha 的顶部和文本第一行的顶部应该仍然在同一条“不可见的线”上

文本应位于右侧,这可能与我用作段落样式的自定义命令有关,即\rubricsprayer

无论如何,我不在乎如何问题解决了,不过解决办法越完善越好。

最小工作示例

\documentclass[10pt]{book}
\usepackage[a4paper]{geometry}
\geometry{a4paper, left=1in, right=1in, top=1in, bottom=1in, portrait}

% Packages
\usepackage[slovak]{babel}       % For the language-specific stuff
\usepackage{bookmark}            % For bookmarks and to stop `hyperref` complaining
\usepackage{xcolor}              % For font colour
\usepackage{enumitem}            % For {enumerate} that can be resumed and referenced
\usepackage{tikz}                % For drawing graphics
\usepackage{wrapfig}             % For wraping figures/images/tikz

% Font family
\usepackage[math-style=ISO, bold-style=ISO, partial=upright, nabla=upright]{unicode-math}
\setmainfont{Libertinus Serif}

% Paragraph and line settings
\setlength{\parindent}{0em}           % Set paragraph indentation
\setlength{\parskip}{0.08in}          % Paragraph spacing
\renewcommand{\baselinestretch}{1.0}  % Line \expandafter\selectlanguage\expandafter{\cvlang}

% Custom commands
\newcommand{\rubrics}[1]{\setlength{\parindent}{0em}\setlength{\parskip}{0.08in}\selectfont\renewcommand{\baselinestretch}{0}\color{red!100}\fontsize{12pt}{14pt}\selectfont{#1}\color{black!100}\normalsize\selectfont}%
\newcommand{\prayer}[1]{\setlength{\parindent}{0em}\setlength{\parskip}{0.16in}\renewcommand{\baselinestretch}{2.0}\color{black!100}\fontsize{20pt}{24pt}\selectfont{#1}\color{black!100}\normalsize\setlength{\parindent}{0em}\setlength{\parskip}{0.08in}\selectfont\renewcommand{\baselinestretch}{1.0}}%
\newcommand{\crossLetters}[1]{\fontsize{40}{48}\selectfont{\textbf{\color{black!100}{#1}}}}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
    \begin{wrapfigure}{l}{0.01cm}
        \begin{tikzpicture}
            \draw[red, line width=1.6mm] (0,-9) node[below=10] {\crossLetters{Ω}} -- (0,0) -- (1,0) node[above=10] {\crossLetters{0}} node[below=10] {\crossLetters{0}} -- (3,0) -- (0,0) -- (0,3) node[above=10] {\crossLetters{Α}} -- (0,0) -- (-1,0) node[above=10] {\crossLetters{2}} node[below=10] {\crossLetters{2}} -- (-3,0);
        \end{tikzpicture}
    \end{wrapfigure}

    \prayer{Kristus je ten istý včera i dnes.}

    \rubrics{(celebrant vrýva zvislú čiaru kríža)}

    \prayer{On je počiatok a koniec,}

    \rubrics{(kňaz vrýva vodorovnú čiaru kríža)}

    \prayer{Alfa}

    \rubrics{(nad zvislú čiaru kríža vrýva písmeno alfa)}

    \prayer{i Omega,}

    \rubrics{(pod zvislú čiaru kríža vrýva písmeno omega)}

    \prayer{Pán času}

    \rubrics{(do ľavého horného uhla kríža vrýva prvú číslicu letopočtu)}

    \prayer{i večnosti.}

    \rubrics{(do pravého horného uhla kríža vrýva druhú číslicu letopočtu)}

    \prayer{Jemu patrí sláva i moc}

    \rubrics{(do ľavého spodného uhla kríža vrýva tretiu číslicu letopočtu)}

    \prayer{po všetky veky vekov. Amen.}

    \rubrics{(do spodného pravého uhla kríža vrýva štvrtú číslicu letopočtu)}
\end{document}

输出

在此处输入图片描述

答案1

解决方案

正如@marmot (比方说)建议,确实可以multicols与 配合使用tikzpicture,但是,一开始我没能让它工作。经过一些尝试和错误,我将其与其他一些调整结合起来,让它工作了。

与问题中的 MWE 相比,我做了以下更改:

  1. 添加\usepackage{multicol};
  2. 修改了\rubrics\prayer命令,删除所有段落格式,只保留字符格式(即字体大小和颜色);
  3. 添加\setlength{\columnsep}{-2.5cm}以使左列变窄/使列宽彼此不同;[1]
  4. 添加\begin{multicols}{2}\end{multicols}
  5. 添加了\vfill\null\columnbreak,这是插入分栏符所必需的;[2]
  6. 我在 4 条较长的行中添加了 4 个换行符 ( \\),以使其看起来更好。:)

[1]不同的列宽:https://tex.stackexchange.com/a/384598/70043

[2] 分栏:https://tex.stackexchange.com/a/8687/70043

修改后的最小工作示例

\documentclass[10pt]{book}
\usepackage[a4paper]{geometry}
\geometry{a4paper, left=1in, right=1in, top=1in, bottom=1in, portrait}

% Packages
\usepackage[slovak]{babel}       % For the language-specific stuff
\usepackage{bookmark}            % For bookmarks and to stop `hyperref` complaining
\usepackage{xcolor}              % For font colour
\usepackage{enumitem}            % For {enumerate} that can be resumed and referenced
\usepackage{tikz}                % For drawing graphics
\usepackage{wrapfig}             % For wraping figures/images/tikz
\usepackage{multicol}            % For columns layout

% Font family
\usepackage[math-style=ISO, bold-style=ISO, partial=upright, nabla=upright]{unicode-math}
\setmainfont{Libertinus Serif}

% Paragraph and line settings
\setlength{\parindent}{0em}           % Set paragraph indentation
\setlength{\parskip}{0.08in}          % Paragraph spacing
\renewcommand{\baselinestretch}{1.0}  % Line \expandafter\selectlanguage\expandafter{\cvlang}

% Custom commands
\newcommand{\rubrics}[1]{\color{red!100}\fontsize{12pt}{14pt}\selectfont{#1}}%
\newcommand{\prayer}[1]{\color{black!100}\fontsize{20pt}{24pt}\selectfont{#1}}%
\newcommand{\crossLetters}[1]{\fontsize{40}{48}\selectfont{\textbf{\color{black!100}{#1}}}}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
    \pagestyle{empty}
    \setlength{\columnsep}{-2.5cm}
    \begin{multicols}{2}
        \begin{tikzpicture}
            \draw[red, line width=1.6mm] (0,-9) node[below=10] {\crossLetters{Ω}} -- (0,0) -- (1,0) node[above=10] {\crossLetters{0}} node[below=10] {\crossLetters{0}} -- (3,0) -- (0,0) -- (0,3) node[above=10] {\crossLetters{Α}} -- (0,0) -- (-1,0) node[above=10] {\crossLetters{2}} node[below=10] {\crossLetters{2}} -- (-3,0);
        \end{tikzpicture}

        \vfill\null\columnbreak  % This whole line is needed to insert a column break

        \prayer{Kristus je ten istý včera i dnes.}

        \rubrics{(celebrant vrýva zvislú čiaru kríža)}

        \prayer{On je počiatok a koniec,}

        \rubrics{(kňaz vrýva vodorovnú čiaru kríža)}

        \prayer{Alfa}

        \rubrics{(nad zvislú čiaru kríža vrýva písmeno alfa)}

        \prayer{i Omega,}

        \rubrics{(pod zvislú čiaru kríža vrýva písmeno omega)}

        \prayer{Pán času}

        \rubrics{(do ľavého horného uhla kríža vrýva\\ prvú číslicu letopočtu)}

        \prayer{i večnosti.}

        \rubrics{(do pravého horného uhla kríža vrýva\\ druhú číslicu letopočtu)}

        \prayer{Jemu patrí sláva i moc}

        \rubrics{(do ľavého spodného uhla kríža vrýva\\ tretiu číslicu letopočtu)}

        \prayer{po všetky veky vekov. Amen.}

        \rubrics{(do spodného pravého uhla kríža vrýva\\ štvrtú číslicu letopočtu)}
    \end{multicols}
\end{document}

输出

输出

答案2

这是一个简单(有想法?)的建议。将左侧边距加宽,并将图片作为覆盖。(抱歉,我无法在编辑器中复制所有这些带重音的文本,因此我删除了所有内容,只留下与要点相关的部分。)

\documentclass[10pt]{book}
\usepackage[a4paper]{geometry}
\usepackage{lipsum}
\usepackage{tikzpagenodes}
\geometry{a4paper, left=4in, right=1in, top=1in, bottom=1in, portrait}
\begin{document}
\begin{tikzpicture}[overlay,remember picture,shift={([xshift=2in,yshift=2in]current page.west)}]
  \draw[red, line width=1.6mm] (0,-9) node[below=10] {$\Omega$} 
  -- (0,0) -- (1,0) node[above=10] {A} 
  node[below=10] {0} -- (3,0) -- (0,0) -- (0,3) 
  node[above=10] {A} -- (0,0) -- (-1,0) 
  node[above=10] {2} node[below=10] 
  {2} -- (-3,0);
\end{tikzpicture}
\lipsum[1-3]
\end{document}

在此处输入图片描述

相关内容