Thallo
Thallo
这家伙不懒,但还是什么也没写

注册于 3年前

回答
10
文章
0
关注者
0

原理是很粗暴的叠图,加上 (current page.***) 强制定位。
只给出 beamer 文档类的示例,其他的不知道,等@u70550 @u19850 或者 @u73286 出手了。

效果图
image.png

原图
image.png

\documentclass{beamer}
\setbeamertemplate{navigation symbols}{}

\usepackage[most]{tcolorbox}

\setbeamertemplate{background canvas}{%
  \begin{tikzpicture}[inner sep=0pt,remember picture,overlay]
    \node at (current page.center) {\includegraphics[height=\paperheight]{1}};
  \end{tikzpicture}
}

\usepackage{tikzpagenodes}

\def\myglass{4}

\makeatletter
\newtcolorbox{glass}[1][]{%
  #1,
  enhanced,
  remember,
  frame hidden,
  interior hidden,
  fonttitle=\bfseries, 
  coltitle=black,
  underlay={
    \begin{tcbclipframe}
      \begin{scope}[remember picture,overlay,inner sep=0pt]
        \fill[white] (current page.south west) rectangle (current page.north east);
        \foreach \x in {-15,-12.5,...,15}{
        \foreach \y in {-15,-12.5,...,15}{
          \node[opacity=0.05] at ([yshift=\y,xshift=\x]current page.center) {\includegraphics[height=\paperheight]{1}};
        }}
      \end{scope}
    \end{tcbclipframe}
   }
}
\makeatother


\begin{document}
    
\begin{frame}
\begin{glass}[title={My title}]
NEKO NEKO NEKO NEKO NEKO
\end{glass}

\begin{glass}[title={My title}]
MEOW MEOW MEOW MEOW MEOW
\end{glass}

\end{frame} 

\end{document}

对于 问题3 来说,这很简单
利用 To[sep] 可以解决。
鉴于只涉及到 问题3 中的三个方块的箭头,这里就删减一部分代码

\documentclass[margin=1.5cm]{standalone}
\usepackage{ctex}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols,calc}
\usetikzlibrary {arrows.meta,positioning}
\begin{document}

\begin{tikzpicture}[auto,rect/.style={rectangle,rounded corners=1mm,fill=blue!30,draw=blue}]
\node[rect,minimum height=.8cm,minimum width=1cm] (B) at (-1,.5) {B};
\node[rect,minimum height=1cm,minimum width=1.2cm] (C) at (.5,-1) {C};
\node[rect,minimum height=1.3cm,minimum width=1.5cm] (D) at (2.3,.5) {D};
\draw[-{>[sep=-0.5mm]},dashed] (B.south east) -- (C.north west) node[midway,below left=-3pt] {3};
\draw[{<[sep=-0.5mm]}-,dashed] (C.north east)  -- (D.south west) node[midway,below right=-3pt] {4};
\end{tikzpicture}

\end{document}

注意两点:

  1. \usetikzlibrary {arrows.meta,positioning} 即使你之前已经引用过了 positioning,我还是将它移动至这个地方,以说明这两个包在这个功能上是必须的。
  2. \draw[-{>[sep=-0.5mm]},dashed] 以及 \draw[{<[sep=-0.5mm]}-,dashed] 这里的用法后面会说。

1000多页的文档,怎么找到的?

搜索 touch只有27个匹配项,可以试试, 在207-208页处有
image.png

下一步找到合适的距离让箭头接触圆角,如果是普通的node就接触了,可以判定为rounded corners影响了,于是搜索rounded corners,在158页处有
image.png

计算距离不用说了 $(\sqrt{2}-1)r$ 这里的 r 就是你设置的 rounded corners = 1mm,于是加上{[sep=0.5mm]}就够了。

我认为主要就3个方面上的内容:

  1. TeX 编程:涉及处理最基本的内容,比如计数器、范围、基本循环结构等;
  2. 针对 TeX 而编写的宏包:需要阅读相关文档、熟悉宏包内的一些基本的代码使用,最经典的如 LaTeX 这样的宏。
  3. TeX 排版:这是更加高级的学习,包括对盒子、线条、胶水、模式的精细控制,这会有大量的命令和参数。

在大多数人的使用上,只需要粗略的学习 1 和 2 就足以面对大多数场景的使用,这也是为什么市面上大多数说教你 "TeX" 的书籍都不会讲得太深的原因。

当然你可以把这三点看成技能树方向,你有空闲时间就可以通过阅读文档来加点。

针对 TeX 编程可以去阅读 Notes On Programming in TEX 这很新并且不会太长完全适合阅读。

针对宏语言最经典的就是 The TeXbook 和 TeX by Topic,当然这两本的块头太大,也可以先读 How to Package Your LATEX Package 或者 LATEX for package and class authors current version

针对排版上的问题,其实阅读 The TeXbook 也是一样有用的,建议也先避开大块头,先去了解一些排版的基本常识,比如了解 word 里所有出现的名词的具体含义再回到 TeX 方向上(相信我,不同软件的理念并不是如此割裂)

再进阶的话就很难单独加点了,同时也会不可避免地涉及到各个方面的内容。想要继续学习的话,总之在字体、PDF、引擎上缺失的内容迟早都要补上的。可以去看看 PDF Reference、PostScript Language Reference Manual、TeX in Practice、Fonts & Encodings、The Craft of Text Editing...

说到最后,其实我更觉得学习路径应该是 latex3——latex2e——plainTeX ,毕竟 l3 的内容已经由团队的努力下变得相对抽象化了更适合用户端的直接使用。

我不建议,因为根号是由多个字符拼接成并由引擎去自动控制它的大小,所以与字体很强相关改动起来很麻烦,不过可以试试其他的方法,比如:

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}[2013-10-15]
\usepackage{scalerel}
\newcommand\mysqrt[2][0pt]{\stretchrel{\sqrt{}}{\addstackgap%
  [#1]{$\displaystyle\overline{#2}$}}}
\begin{document}
\[
\mysqrt[1pt]{\sum_{i=1}^{n}(y^{i}-x^{i})^{3}}
\]
\end{document}

image.png

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\usepackage{scalerel}
\newcommand\mysqrt[2][0pt]{\stretchrel{\sqrt{}}{\addstackgap%
  [#1]{$\displaystyle\overline{#2}$}}}
\begin{document}
\[
\mysqrt{1+\mysqrt{1+\mysqrt{1+\mysqrt{1+\mysqrt{1+\mysqrt{1+\mysqrt{1+\mysqrt{1}}}}}}}}
\]

\[
\sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1}}}}}}}}
\]
\end{document}

image.png

使用 amssymb 包,通过在 <arrow> 前面添加 n 可以得到否定箭头,但箭头可能太少,于是还是给个小建议供参考。

鱼大神代码学不来,学来我也写不懂,捣鼓一个新的,尽可能满足你的需求:
同样的思路,在符号的中心处添加一条斜线,通过添加线并旋转制成的 \homo[...]{<array>} 指令,其中可选参数用于水平移动斜线的位置,使其在箭头过短时不会碰到箭头两端。

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}  % 更多箭头啊啊啊啊啊啊啊啊
\usepackage{graphicx} % 24岁是\rotatebox!!!

\makeatletter % 要 @ 啊啊啊啊啊啊啊
\newcommand*\homo[2][0mu]{\HomoInternal{#1}{\homoslash}{#2}}
\newcommand*\HomoInternal[3]{\mathpalette\Homo@{{#1}{#2}{#3}}}
\newcommand*\Homo@[2]{\Homo@@{#1}#2}
\newcommand*\Homo@@[4]{%
  \mathrel{\ooalign{%
    $\m@th#1#4$\cr
    \hidewidth$\m@th#3{#1}\mkern\muexpr#2*2$\hidewidth\cr
  }}%
}
\newcommand*\homoslash[1]{\rotatebox[origin=c]{60}{$\m@th#1-$}}
\makeatother  % 不要 @ 啊啊啊啊啊啊啊啊


\begin{document}

\[
\begin{array}{cc}
\hline
\texttt{\tiny\textbackslash homo[...]\{arrow\}} & \texttt{\tiny\textbackslash n<arrow>}\\ \hline
\homo[1mu]{\rightarrow} & \nrightarrow\\
\homo[-1mu]{\leftarrow} & \nleftarrow\\
\homo[2mu]{\Rightarrow} & \nRightarrow\\
\homo{\leftrightarrow} & \nleftrightarrow\\
\homo{\Leftrightarrow} & \nLeftrightarrow\\
\homo[1mu]{\mapsto} & \\
\homo[1mu]{\hookrightarrow} & \\
\homo[1mu]{\leadsto} & \\
\homo[1mu]{\rightsquigarrow} & \\
\homo[1mu]{\rightharpoonup} & \\
\homo[1mu]{\rightarrowtail} & \\
\homo[1mu]{\rightrightarrows} & \\
\homo[1mu]{\longrightarrow} & \\
\homo[1mu]{\xrightarrow{abcdefg}} &
\\ \hline
\end{array}
\]

\[
y^{x \homo[1mu]{\Leftrightarrow} y^{x \homo[1mu]{\Leftrightarrow} y}} \homo[1mu]{\Leftrightarrow} y_{x \homo[1mu]{\Leftrightarrow} y_{x \homo[1mu]{\Leftrightarrow} y}}
\]

\end{document}

使用\homo[...]{<array>}
image.png

minipage 提供三个可选参数,将文本内容放入一个宽width的盒子当中,这样像是一个页面的缩小版本,所以说是「小页面」。

\begin{minipage}[position][height][inner-pos]{width}
  contents
\end{minipage}
  1. width 给出框的宽度,使用的是刚性长度。
  2. position 控制垂直对齐

    • c:默认选项,垂直中心与相邻文本行中心对齐。
    • t:将 minipage 顶行的基线和相邻文本的基线对齐,类似于\vtop
    • b:将 minipage 底部的基线和相邻文本的基线对齐,类似于\vbox
  3. height 给出框的高度,也是使用刚性长度。
  4. inner-pos 控制文本内容在盒子内的放置方式,它默认和 position 的值一样。不难发现,当它在 height 选项设置的高度大于本身的高度才有意义。

    • c:放置在中心。
    • t:放置在顶部。
    • b:放置在底部。
    • s:将内容垂直伸出。

请给出MWE文件或代码,不要只给部分截图。

不管怎么说,使用编辑器进行全局替换(快捷键一般是 Ctrl+F)都是最好的方案,因为这在编译前替换省去了不少可能出现的问题。如果你想在部分场景下替换,可以考虑下面的代码。

\documentclass{ctexart}
\newcommand\myrep[1]{.\relax}
\newXeTeXintercharclass\rep
\XeTeXcharclass `。=\rep
\XeTeXinterchartoks 0 \rep  {\myrep}
\XeTeXinterchartoks \rep \rep  {\myrep}
\XeTeXinterchartoks 4095 \rep  {\myrep}
\begin{document}
.....

。。。。。。

......
\end{document}

效果如下

image.png

设置 TblrInner 即可。

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\begin{document}

\begin{table}[htb]
    \SetTblrInner{stretch=0, rows={ht=\baselineskip}}
\begin{tblr}{X[c,m]X[c,m]X[c,m]X[-1,c,m]X[c,m]X[c,m]}
    \toprule
    \SetCell[r=2]{c,m} ASDF
    & \SetCell[c=2]{c,m} {ZXCV} &  &  & \SetCell[c=2]{c,m} {IUYT} & \\
    \cmidrule{2-3} \cmidrule{5-6}
    & {OIUYT} & {CVFR} & & {SDEW} & {PLOIK}\\
    \midrule
    ZXCVB & 0.30  & 0.64  &       & 0.25  & 0.48 \\
    \bottomrule
\end{tblr}
\end{table}%

\end{document}

image.png

代码
image.png

效果图
image.png

在 siunitx 文档的 表24 有示例,红框是需要注意的地方
image.png

发布
问题