找回密码
 快速注册
搜索
查看: 84|回复: 6

请教mdframed如何弄出三种不同的文本环境类型?

[复制链接]

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

abababa 发表于 2023-9-18 19:52 |阅读模式
如题,我想弄一个带边框的专门输入注释文本类型的环境,代码如下:
  1. \usepackage[framemethod=tikz]{mdframed}
  2. \mdfdefinestyle{myside}{
  3. leftmargin=50pt,
  4. rightmargin=50pt,
  5. innertopmargin=5pt,
  6. innerbottommargin=5pt,
  7. innerleftmargin=1cm,
  8. innerrightmargin=1cm,
  9. linecolor=blue,
  10. usetwoside=false,
  11. font=\footnotesize
  12. }
复制代码


我希望达到的目标是三个:
1.当输入成段的文本时,能直接在第一行前面空两格。如下:
  1. \begin{mdframed}[style=myside]
  2. 这是一段注释文本,需要每个首行都自动空两格。
  3. 另起一段。
  4. 再另起一段。
  5. \end{mdframed}
复制代码



2.当输入诗这类整齐的文本时,用一个\begin{center}来包住,就能让诗居中,但首行不用空两格:
  1. \begin{mdframed}[style=myside]
  2. \begin{center}
  3. 白日依山尽,黄河入海流。
  4. 欲穷千里目,更上一层楼。
  5. \end{center}
  6. \end{mdframed}
复制代码


3.当输入词这类文本时,也应该“居中”,但并不是每行都居中,而是整体往中间一点,但每行还是要左对齐:
  1. \begin{mdframed}[style=myside]
  2. \begin{center}
  3. 大江东去,浪淘尽,千古风流人物。
  4. 故垒西边,人道是,三国周郎赤壁。
  5. 乱石穿空,惊涛拍岸,卷起千堆雪。
  6. 江山如画,一时多少豪杰。
  7. \end{center}
  8. \end{mdframed}
复制代码


现在第1个不能自动实现,需要手工空格。第3个也不能自动实现,比如最后一句,并不是要它居中,而是想让它像上面那几行一样首字左对齐,但整篇词的整体位置还要在框的中间。请教这个要怎么做才行?

另外我修改了这些,不知道有没有影响:
  1. \XeTeXlinebreaklocale "zh"
  2. \XeTeXlinebreakskip = 0pt plus 1pt
  3. \usepackage{indentfirst}
  4. \setlength{\parindent}{2em}
  5. \setlength{\parskip}{0.7em}
  6. \renewcommand{\baselinestretch}{1.28}
复制代码

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-9-18 23:08
  1. \documentclass[UTF8]{ctexart}
  2. \usepackage[framemethod=tikz]{mdframed}
  3. \mdfdefinestyle{myside}{
  4. leftmargin=50pt,
  5. rightmargin=50pt,
  6. innertopmargin=5pt,
  7. innerbottommargin=5pt,
  8. innerleftmargin=1cm,
  9. innerrightmargin=1cm,
  10. linecolor=blue,
  11. usetwoside=false,
  12. font=\footnotesize
  13. }
  14. \newenvironment{mdidf}%indent first
  15. {\begin{mdframed}[style=myside]\leavevmode\footnotesize\indent\ignorespaces}
  16. {\end{mdframed}}
  17. \newenvironment{mdct}%center
  18. {\begin{mdframed}[style=myside]\centering}
  19. {\end{mdframed}}
  20. \usepackage{varwidth}
  21. \newenvironment{mdctl}%center left
  22. {\begin{mdframed}[style=myside]\centering\begin{varwidth}{\linewidth}}
  23. {\end{varwidth}\end{mdframed}}
  24. \begin{document}
  25. \begin{mdidf}
  26. 这是一段注释文本,需要每个首行都自动空两格。
  27. 这是一段注释文本,需要每个首行都自动空两格。
  28. 这是一段注释文本,需要每个首行都自动空两格。
  29. 另起一段。另起一段。另起一段。另起一段。另起一段。另起一段。
  30. 再另起一段。再另起一段。再另起一段。再另起一段。再另起一段。
  31. \end{mdidf}
  32. \begin{mdct}
  33. 白日依山尽,黄河入海流。
  34. 欲穷千里目,更上一层楼。
  35. \end{mdct}
  36. \begin{mdctl}
  37. 大江东去,浪淘尽,千古风流人物。
  38. 故垒西边,人道是,三国周郎赤壁。
  39. 乱石穿空,惊涛拍岸,卷起千堆雪。
  40. 江山如画,一时多少豪杰。
  41. \end{mdctl}
  42. \end{document}
复制代码

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-9-19 14:15

感觉这样的话,不用那个mdct,直接用mdctl就够了,诗也能行。不过我这里发现小字框里的段首不是空两格,感觉像是空了三格,弄了半天也没弄明白,代码如下:
  1. \documentclass[a4paper]{book}
  2. \usepackage{amsmath,yhmath,amssymb,etoolbox,esvect,stmaryrd,cite,extarrows,comment}
  3. \include{tikzcolor}
  4. \usepackage[toc,page]{appendix}
  5. \usepackage[small,center,pagestyles]{titlesec}
  6. \titleformat{\chapter}[hang]{\Large\bfseries}{\chaptername}{1em}{}
  7. \renewcommand{\chaptername}{第 \thechapter 章}
  8. \usepackage[framemethod=tikz]{mdframed}
  9. \mdfdefinestyle{myside}{
  10. leftmargin=50pt,
  11. rightmargin=50pt,
  12. innertopmargin=5pt,
  13. innerbottommargin=5pt,
  14. innerleftmargin=1cm,
  15. innerrightmargin=1cm,
  16. linecolor=blue,
  17. usetwoside=false,
  18. font=\footnotesize
  19. }
  20. \newenvironment{mdidf}%indent first
  21. {\begin{mdframed}[style=myside]\leavevmode\footnotesize\indent\ignorespaces}
  22. {\end{mdframed}}
  23. \newenvironment{mdct}%center
  24. {\begin{mdframed}[style=myside]\centering}
  25. {\end{mdframed}}
  26. \usepackage{varwidth}
  27. \newenvironment{mdctl}%center left
  28. {\begin{mdframed}[style=myside]\centering\begin{varwidth}{\linewidth}}
  29. {\end{varwidth}\end{mdframed}}
  30. % 交叉引用链接
  31. \usepackage[colorlinks,linkcolor=red,anchorcolor=blue,citecolor=green]{hyperref}
  32. \usepackage{xltxtra,fontspec,xunicode}
  33. \usepackage[slantfont,boldfont]{xeCJK}
  34. \punctstyle{kaiming}
  35. \xeCJKsetup{AutoFallBack=true}
  36. \setCJKmainfont{Noto Sans CJK SC}
  37. \setCJKfallbackfamilyfont{\CJKrmdefault}{ {Plangothic P1}, {Plangothic P2} }
  38. \setCJKmonofont{WenQuanYi Micro Hei Mono}
  39. \setmainfont{Latin Modern Roman}
  40. \setmonofont{DejaVu Sans Mono}
  41. \setsansfont{DejaVu Sans}
  42. \XeTeXlinebreaklocale "zh"
  43. \XeTeXlinebreakskip = 0pt plus 1pt
  44. % 设置缩进量
  45. \usepackage{indentfirst}
  46. \setlength{\parindent}{2em}
  47. \setlength{\parskip}{0.7em}
  48. \renewcommand{\baselinestretch}{1.28}
  49. % 页边距设置
  50. \usepackage[top=0.5in,bottom=0.5in,left=0.5in,right=0.5in]{geometry}
  51. \hfuzz=\maxdimen
  52. \tolerance=1000000
  53. \hbadness=1000000
  54. \renewcommand{\contentsname}{目录}
  55. \renewcommand\bibname{参考文献}
  56. \usepackage{makeidx}
  57. \begin{document}
  58. \frontmatter
  59. \tableofcontents
  60. \mainmatter
  61. 我们那时候不知道谈些什么,只记得闰土很高兴,说是上城之后,见了许多没有见过的东西。
  62. 第二日,我便要他捕鸟。他说:
  63. \begin{mdidf}
  64. “这不能。须大雪下了才好。我们沙地上,下了雪,我扫出一块空地来,用短棒支起一个大竹匾,撒下秕谷,看鸟雀来吃时,我远远地将缚在棒上的绳子只一拉,那鸟雀就罩在竹匾下了。什么都有:稻鸡,角鸡,鹁鸪,蓝背……”
  65. \end{mdidf}
  66. 我于是又很盼望下雪。
  67. 闰土又对我说:
  68. \begin{mdidf}
  69. “现在太冷,你夏天到我们这里来。我们日里到海边检贝壳去,红的绿的都有,鬼见怕也有,观音手也有。晚上我和爹管西瓜去,你也去。”
  70. \end{mdidf}
  71. ……
  72. 可惜正月过去了,闰土须回家里去,我急得大哭,他也躲到厨房里,哭着不肯出门,但终于被他父亲带走了。他后来还托他的父亲带给我一包贝壳和几支很好看的鸟毛,我也曾送他一两次东西,但从此没有再见面。
  73. \begin{mdctl}
  74. 万家墨面没蒿莱,敢有歌吟动地哀。
  75. 心事浩茫连广宇,于无声处听惊雷。
  76. \end{mdctl}
  77. \backmatter
  78. \end{document}
复制代码


我这到底是哪里的问题?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-9-19 15:56
abababa 发表于 2023-9-19 14:15
感觉这样的话,不用那个mdct,直接用mdctl就够了,诗也能行。不过我这里发现小字框里的段首不是空两格, ...


大概是我用了 ctex 而你没有

ctex 会在当字体大小变化时缩进也跟着变,默认是始终空两个汉字宽。

对比一下:
  1. \documentclass{article}
  2. \setlength{\parindent}{2em}
  3. \begin{document}
  4. M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M
  5. \tiny
  6. M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M
  7. \Huge
  8. M M M M M M M M M M M M M M M M M M M
  9. \end{document}
复制代码

VS
  1. \documentclass[UTF8]{ctexart}
  2. \begin{document}
  3. 我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我
  4. \footnotesize
  5. 我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我我
  6. \Huge
  7. 我我我我我我我我我我我我我我我
  8. \end{document}
复制代码

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-9-19 18:20
kuing 发表于 2023-9-19 15:56
大概是我用了 ctex 而你没有

ctex 会在当字体大小变化时缩进也跟着变,默认是始终空两个汉字宽。

果然如此。可能是ctex做了很多适合中文的调整吧。

点评

嗯嗯  发表于 2023-9-19 21:53

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-10-15 16:31
致各位论坛网友:

由于 hbghlyj 操作数据库失误导致由 2023-9-26 至 2023-11-5 间期的所有帖子的内文都被清空,在此给大家真诚道歉。

现在我们正在浏览这期间的帖子,努力回忆内容,尽可能地多恢复一些,如果您还记得本帖原本的内容,也希望您能编辑回来,麻烦各位了。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:11

Powered by Discuz!

× 快速回复 返回顶部 返回列表