![将“tikzpicture”放在文本左侧](https://linux22.com/image/477767/%E5%B0%86%E2%80%9Ctikzpicture%E2%80%9D%E6%94%BE%E5%9C%A8%E6%96%87%E6%9C%AC%E5%B7%A6%E4%BE%A7.png)
背景
我想为罗马天主教圣周礼拜仪式(从圣咏主日到复活节主日)编写一份 LuaLaTeX 文档。我用斯洛伐克语编写(这里'使用图像作为包含任何类型图形(如分数或十字架)部分的 PDF;这里该文件的英文版本)
我用复活节蜡烛制作了十字架(斯洛伐克语版本:第 3 页;英语版本:第 4 页),但是我无法将其放在随附文本的左侧。我使用 做到了这一点tikzpicture
。
我尝试过的
我尝试使用multicols
,但是这个包不支持tikzpicture
在列中。
然后我发现这问题,所以我尝试使用wrapfigure
,但我无法让它工作。
问题定义
当我使用 时wrapfigure
,应该位于十字左边的文本会左对齐,就好像tikzpicture
不存在一样。
此外,十字应左对齐(至页面左边距)并至顶部边距。
文本的第一行应该移动到顶部边缘,以使字母 alpha 的顶部与文本第一行的顶部对齐。
此外,如果十字和文本应该在页面上向下移动(因为之前的文本将与十字及其文本在同一页面上结束),则十字和其文本应该根据需要向下移动,而 alpha 的顶部和文本第一行的顶部应该仍然在同一条“不可见的线”上
文本应位于右侧,这可能与我用作段落样式的自定义命令有关,即\rubrics
和prayer
。
无论如何,我不在乎如何问题解决了,不过解决办法越完善越好。
最小工作示例
\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 相比,我做了以下更改:
- 添加
\usepackage{multicol}
; - 修改了
\rubrics
和\prayer
命令,删除所有段落格式,只保留字符格式(即字体大小和颜色); - 添加
\setlength{\columnsep}{-2.5cm}
以使左列变窄/使列宽彼此不同;[1] - 添加
\begin{multicols}{2}
和\end{multicols}
; - 添加了
\vfill\null\columnbreak
,这是插入分栏符所必需的;[2] - 我在 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}