算用数字のタブ揃え

算用数字のタブ揃え

- 信男 水羽 の投稿
返信数: 11
以前、なんどかフォーラムでお世話になりました。みずはです。しばらくぶりの質問です。現在、texliveの2021を使用するようなりました。windows11で以下のファイルをpdf化すると、年月日の漢字で揃えることができません。これはtexの仕様なのでしょうか。ご教示いただければ、幸甚です。
-------------------
\documentclass[uplatex,dvipdfmx,A4paper,jbase=15Q,ja=standard,titlepage]{bxjsarticle}
\usepackage[english]{babel}
\usepackage[main=japanese]{pxbabel}
\begin{document}

\begin{enumerate}
\item 2007年11月10日(土曜日)21:00~21:30
\item 2007年11月17日(土曜日)21:00~21:30
\item 2007年11月24日(土曜日)21:00~21:30
\item 2007年12月1日(土曜日)21:00~21:30
\end{enumerate}
\end{document}
----------
とり急ぎ。
信男 水羽 への返信

Re: 算用数字のタブ揃え

- 髙橋 政晴 の投稿
根本的な解決方法は初心者の私にはわかりませんが, 急ぎということなので, とりあえず以下のようにすることで目標の出力を得られた, というご報告をさせていただきます。

\documentclass[uplatex,dvipdfmx,A4paper,jbase=15Q,ja=standard,titlepage]{bxjsarticle}
\usepackage[english]{babel}
\usepackage{chngpage}
\usepackage[main=japanese]{pxbabel}
\begin{document}
これはテストです。
\begin{table}[h]
{\tabcolsep =0.5mm
\begin{tabular}{cccccccc}
2007 & 年 & 11 & 月 & 10 & 日 & (土曜日) & 21:00~21:30 \\
2007 & 年 & 11 & 月 & 17 & 日 & (土曜日) & 21:00~21:30 \\
2007 & 年 & 11 & 月 & 24 & 日 & (土曜日) & 21:00~21:30 \\
2007 & 年 & 12 & 月 & 1 & 日 & (土曜日) & 21:00~21:30
\end{tabular}}
\end{table}

これはテストです。
\end{document}
髙橋 政晴 への返信

Re: 算用数字のタブ揃え

- 和田 勇 の投稿
こんなのはどうでしょうか?
時刻は扱っていないので \日時 というマクロ名はよくないかもしれませんが ..
一桁の数値を半角で入れた場合、空白を前におくとそれも引数にとりこみます。
(この前置された空白を除去したいけど、今は??です、
 どなたかご存知の方、フォロー願います)
今は一桁の数値は空白を前置すれば、右寄せ風に表示されます。


        \documentclass[uplatex,dvipdfmx,A4paper,jbase=15Q,ja=standard,titlepage]{bxjsarticle}
        \usepackage[english]{babel}
        \usepackage[main=japanese]{pxbabel}
        \begin{document}
       
        \begin{enumerate}
        \item 2007年11月10日(土曜日)21:00~21:30
        \item 2007年11月17日(土曜日)21:00~21:30
        \item 2007年11月24日(土曜日)21:00~21:30
        \item 2007年12月1日(土曜日)21:00~21:30
        \end{enumerate}
       
        % https://texwiki.texjp.org/?TeX入門%2Fマクロの作成#z1a2dd9a
        % 区切り付き引数を取るマクロ
        \def\日時#1年#2月#3日{#1年\makebox[1.5em]{#2}月\makebox[1.5em]{#3}日}
        \begin{enumerate}
        \item \日時2007年11月10日(土曜日)21:00~21:30
        \item \日時2007年11月17日(土曜日)21:00~21:30
        \item \日時2007年11月24日(土曜日)21:00~21:30
        \item \日時2007年12月1日(土曜日)21:00~21:30
        \item \日時2007年 1月 1日(土曜日)21:00~21:30% スペースも取り込むので右寄せ風
        \item \日時2007年1月1日(土曜日)21:00~21:30% 空白入れないので中央寄せ
        \end{enumerate}
       
        \end{document}
和田 勇 への返信

Re: 算用数字のタブ揃え

- 髙橋 政晴 の投稿
和田様のアイディアを参考にさせていただきまして, 空白を取り込まないようにする方法について以下に提示させていただきます。

\documentclass[uplatex,dvipdfmx,A4paper,jbase=15Q,ja=standard,titlepage]{bxjsarticle}
\usepackage[english]{babel}
\usepackage{chngpage}
\usepackage[main=japanese]{pxbabel}
\newcommand{\nichizi}[3]{#1年\makebox[1.5em]{#2}月\makebox[1.5em]{#3}日}
\begin{document}
%提案です
\begin{enumerate}
\item\nichizi{2007}{11}{10}(土曜日)21:00~21:30
\item\nichizi{2007}{11}{17}(土曜日)21:00~21:30
\item\nichizi{2007}{11}{24}(土曜日)21:00~21:30
\item\nichizi{2007}{12}{1}(土曜日)21:00~21:30
\item\nichizi{2008}{1}{1}(土曜日)21:00~21:30
\end{enumerate}



これはテストです。
\end{document}

こういうことでよろしいのでしょうか?
これを用いると1桁であっても中央揃えになると思います。
髙橋 政晴 への返信

Re: 算用数字のタブ揃え

- 和田 勇 の投稿
フォローありがとうございます。
残念ですが、私の期待しているものとはちょっと異なるようです。
自分で考えてみます。
和田 勇 への返信

Re: 算用数字のタブ揃え

- Z. R. の投稿

「トークン列の先頭にあるかもしれない空白トークンを除去する」ための簡単な方法としては次のようなのがあります。
※「区切り無し引数の場合は空白が読みとばされる」ことを利用している。
※もちろん適用できる条件・副作用などに注意が必要。

\def\my@trim#1{\my@trim@a#1}
\def\my@trim@a#1{#1}
%例
[\my@trim{ 9}]%=>[9]
[\my@trim{99}]%=>[99]
Z. R. への返信

Re: 算用数字のタブ揃え

- 和田 勇 の投稿
ありがとうございます。
この方法も、頭には浮かんでいましたが未検証でした。
また、考えてみれば、前置空白だけでなく後置空白も考えたいなともい
今妄想中なことは正規表現的で表せば
  「 ([[:blank:] ]*)([[:digit:]0-9]*)([[:blank:]<全角空白>]*)
でその真ん中 ([[:digit:]0-9]*) のを取り出す方法。

今の僕の知識だけでできるのかな?
でも、きっと先人のうち誰かは同じことを思ったかもしれないと思い
懸念される副作用をできるだけ回避できる方法を
暇を見て探してみます。

#なんか、私の質問の方に話が逸れてしまいましたね。
信男 水羽 への返信

Re: 算用数字のタブ揃え

- 北見 けん の投稿
pTeXでは、ソースファイル上でいわゆる半角数字を使った時に印字される活字の幅が、全角数字を使った時に印字される活字の幅の半分になっているというわけではないですし、全角数字・半角数字・英文字・和文字などの異なる文字種が隣接して印字されるときに組合せに応じた様々な大きさの空白が自動で挿入されたりもするので、「11月24日」と「12月1日」が同じ幅に組まれることは期待できません。
「11月24日」を組んだ場合、和文字と英数字の間に自動で挟まれる\xkanjiskipを@で表すと、「11@月@24@日」のように組まれます。「12月1日」の場合は「12@月1日」となります。全角数字は和文文字扱いなので、\xkanjiskip は挟まれません。しかも、半角数字2文字分である「24」の文字幅と全角和文字1文字分である「1」の文字幅も異なります。したがって、なんとか細工して「12@月@{「24」と同じ幅の空間の中央に「1」を配置したボックス}@日」のように組めば「11@月@24@日」と同じ幅で組めることになります。具体的には、次のようになります。

\item 2007年12月\begingroup\setbox0\hbox{24}\hskip\xkanjiskip\hbox to \wd0{\hss 1\hss}\hskip\xkanjiskip\endgroup 日(土曜日)21:00~21:30
信男 水羽 への返信

Re: 算用数字のタブ揃え

- 信男 水羽 の投稿
高橋さま・和田さま・北見さま

 ご教示、感謝します。今日は一日会議で忙殺され、ご返事が遅れました。申し訳ありません。
 先程、皆さんのご提案を確認しました。すべて漢字部分でタブ揃えすることはできました。本当にありがとうございました。最終版の作成に役だてさせていただきます。
 余談ですが、僕などの世代(1960年生まれ)は、活版印刷で育っているので、一文字は一文字の活字分の幅と高さをもっているべきだという固定観念があります。禁則などについても、最近はかなり自由度が高くなっていますし、URLの表示などでは、さまざまな方法があるようで、新たなスタイルに慣れてゆくことも必要かも知れないと感じる昨今なのですが、つい質問させていただきました。改めてご教示に感謝します。
信男 水羽 への返信

Re: 算用数字のタブ揃え

- 村上 TomOne の投稿
解決されたようですが別解として。

そもそも英数用フォントと日本語用フォントが違うので、半角2文字幅=全角1文字幅になる事は期待できません。
全く違う字形になることもあります。

全てを日本語フォントで表示するためにotf.sty等を使って

\ajTsumesuji2{2023}年\ajTsumesuji1{1}月\ajTsumesuji2{23}日
\ajTsumesuji2{2023}年\ajTsumesuji*{1}月\ajTsumesuji*{23}日

とするのはどうでしょう。2分幅と全角で字形が異なる事も避けられます。
フォントによってはグリフ持ってないかもしれませんが。
村上 TomOne への返信

Re: 算用数字のタブ揃え

- 信男 水羽 の投稿
村上さま

 すべてを日本語フォントで表示するという解決策があったのですね。
 このあたり全く不案内で、ajTsumesujiも知りませんでした。texの奥深さを改めて実感しています。
 時間をみつけて勉強してみます。ご教示、感謝します。ありがとうございました。